I want to extract the middle part of a string using FSharp if it is quoted, similar like this:
let middle =
match original with
| "\"" + mid + "\"" -> mid
| all -> all
But it doesn’t work because of the infix operator + in pattern expression. How can I extract this?
I don’t think there is any direct support for this, but you can certainly write an active pattern. Active patterns allow you to implement your own code that will run as part of the pattern matching and you can extract & return some part of the value.
The following is a pattern that takes two parameters (prefix and postfix string) and succeeds if the given input starts/ends with the specified strings. The pattern is not complete (can fail), so we’ll use the
|Name|_|syntax and it will need to return option value:Now we can use
Middlein pattern matching (e.g. when usingmatch):