Returns a String.Slice obtained by removing the specified number of characters (Unicode code
points) from the start of the string.
If n is greater than s.toList.length, returns an empty slice.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
Examples:
"red green blue".drop 4 == "green blue".toSlice"red green blue".drop 10 == "blue".toSlice"red green blue".drop 50 == "".toSlice"مرحبا بالعالم".drop 3 == "با بالعالم".toSlice
Instances For
Returns a String.Slice obtained by removing the specified number of characters (Unicode code
points) from the end of the string.
If n is greater than s.toList.length, returns an empty slice.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
Examples:
"red green blue".dropEnd 5 == "red green".toSlice"red green blue".dropEnd 11 == "red".toSlice"red green blue".dropEnd 50 == "".toSlice"مرحبا بالعالم".dropEnd 3 == "مرحبا بالع".toSlice
Instances For
Equations
- String.Internal.dropRightImpl s n = (s.dropEnd n).copy
Instances For
Returns a String.Slice that contains the first n characters (Unicode code points) of
s.
If n is greater than s.toList.length, returns s.toSlice.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
Examples:
"red green blue".take 3 == "red".toSlice"red green blue".take 1 == "r".toSlice"red green blue".take 0 == "".toSlice"red green blue".take 100 == "red green blue".toSlice"مرحبا بالعالم".take 5 == "مرحبا".toSlice
Instances For
Returns a String.Slice that contains the last n characters (Unicode code points) of
s.
If n is greater than s.toList.length, returns s.toSlice.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
Examples:
"red green blue".takeEnd 4 == "blue".toSlice"red green blue".takeEnd 1 == "e".toSlice"red green blue".takeEnd 0 == "".toSlice"red green blue".takeEnd 100 == "red green blue".toSlice"مرحبا بالعالم".takeEnd 5 == "لعالم".toSlice
Instances For
Creates a string slice that contains the longest prefix of s in which pat matched
(potentially repeatedly).
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".takeWhile Char.isLower == "red".toSlice"red green blue".takeWhile 'r' == "r".toSlice"red red green blue".takeWhile "red " == "red red ".toSlice"red green blue".takeWhile (fun (_ : Char) => true) == "red green blue".toSlice
Instances For
Creates a string slice by removing the longest prefix from s in which pat matched
(potentially repeatedly).
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".dropWhile Char.isLower == " green blue".toSlice"red green blue".dropWhile 'r' == "ed green blue".toSlice"red red green blue".dropWhile "red " == "green blue".toSlice"red green blue".dropWhile (fun (_ : Char) => true) == "".toSlice
Instances For
Creates a string slice that contains the longest suffix of s in which pat matched
(potentially repeatedly).
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".takeEndWhile Char.isLower == "blue".toSlice"red green blue".takeEndWhile 'e' == "e".toSlice"red green blue".takeEndWhile (fun (_ : Char) => true) == "red green blue".toSlice
Equations
- s.takeEndWhile pat = s.toSlice.takeEndWhile pat
Instances For
Equations
- s.takeRightWhile p = (s.takeEndWhile p).toString
Instances For
Equations
- s.takeRightWhile p = s.takeEndWhile p
Instances For
Creates a new string by removing the longest suffix from s in which pat matches
(potentially repeatedly).
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".dropEndWhile Char.isLower == "red green ".toSlice"red green blue".dropEndWhile 'e' == "red green blu".toSlice"red green blue".dropEndWhile (fun (_ : Char) => true) == "".toSlice
Equations
- s.dropEndWhile pat = s.toSlice.dropEndWhile pat
Instances For
Equations
- s.dropRightWhile p = (s.dropEndWhile p).toString
Instances For
Equations
- s.dropRightWhile p = s.dropEndWhile p
Instances For
If pat matches a prefix of s, returns the position at the start of the remainder.
Returns none otherwise.
This function is generic over all currently supported patterns.
Equations
- s.skipPrefix? pat = Option.map String.Pos.ofToSlice (s.toSlice.skipPrefix? pat)
Instances For
Returns the position after the longest prefix of s for which pat matches
(potentially repeatedly).
Equations
- s.skipPrefixWhile pat = String.Pos.ofToSlice (s.toSlice.skipPrefixWhile pat)
Instances For
Checks whether a string only consists of matches of the pattern pat.
Short-circuits at the first pattern mis-match.
This function is generic over all currently supported patterns.
Examples:
"brown".all Char.isLower = true"brown and orange".all Char.isLower = false"aaaaaa".all 'a' = true"aaaaaa".all "aa" = true"aaaaaaa".all "aa" = false
Instances For
Checks whether a string only consists of matches of the pattern pat, starting from the back
of the string.
Short-circuits at the first pattern mis-match.
This function is generic over all currently supported patterns.
For many types of patterns, this function can be expected to return the same result as
String.all. If mismatches are expected to occur close to the end of the string, this function
might be more efficient.
For some types of patterns, this function will return a different result than String.all.
Consider, for example, a pattern that matches the longest string at the given position that matches
the regular expression "a|aa|ab". Then, given the input string "aab", performing
String.all will greedily match the prefix "aa" and then get stuck on the remainder
"b", causing it to return false. On the other hand, String.revAll will match
the suffix "ab" and then match the remainder "a", so it will return true.
Examples:
"brown".revAll Char.isLower = true"brown and orange".revAll Char.isLower = false"aaaaaa".revAll 'a' = true"aaaaaa".revAll "aa" = true"aaaaaaa".revAll "aa" = false
Instances For
If pat matches at pos, returns the position after the end of the match.
Returns none otherwise.
This function is generic over all currently supported patterns.
Equations
- pos.skip? pat = Option.map String.Pos.ofToSlice (pos.toSlice.skip? pat)
Instances For
Advances pos as long as pat matches.
Equations
- pos.skipWhile pat = String.Pos.ofToSlice (pos.toSlice.skipWhile pat)
Instances For
Checks whether the first string (s) begins with the pattern (pat).
String.isPrefixOf is a version that takes the
potential prefix before the string.
Examples:
"red green blue".startsWith "red" = true"red green blue".startsWith "green" = false"red green blue".startsWith "" = true"red green blue".startsWith 'r' = true"red green blue".startsWith Char.isLower = true
Equations
- s.startsWith pat = s.toSlice.startsWith pat
Instances For
Checks whether the second string (s) begins with a prefix (p).
This function is generic over all currently supported patterns.
String.startsWith is a version that takes the potential prefix after the string.
Examples:
"red".isPrefixOf "red green blue" = true"green".isPrefixOf "red green blue" = false"".isPrefixOf "red green blue" = true
Equations
- p.isPrefixOf s = s.startsWith p
Instances For
Equations
Instances For
Checks whether the string (s) ends with the pattern (pat).
This function is generic over all currently supported patterns.
Examples:
"red green blue".endsWith "blue" = true"red green blue".endsWith "green" = false"red green blue".endsWith "" = true"red green blue".endsWith 'e' = true"red green blue".endsWith Char.isLower = true
Instances For
If pat matches a suffix of s, returns the position at the beginning of the suffix.
Returns none otherwise.
This function is generic over all currently supported patterns.
Equations
- s.skipSuffix? pat = Option.map String.Pos.ofToSlice (s.toSlice.skipSuffix? pat)
Instances For
Returns the position at the start of the longest suffix of s for which pat matches
(potentially repeatedly).
Equations
- s.skipSuffixWhile pat = String.Pos.ofToSlice (s.toSlice.skipSuffixWhile pat)
Instances For
If pat matches at pos, returns the position after the end of the match.
Returns none otherwise.
This function is generic over all currently supported patterns.
Equations
- pos.revSkip? pat = Option.map String.Pos.ofToSlice (pos.toSlice.revSkip? pat)
Instances For
Rewinds pos as long as pat matches.
Equations
- pos.revSkipWhile pat = String.Pos.ofToSlice (pos.toSlice.revSkipWhile pat)
Instances For
Removes trailing whitespace from a string by returning a slice whose end position is the last non-whitespace character, or the start position if there is no non-whitespace character.
“Whitespace” is defined as characters for which Char.isWhitespace returns true.
Examples:
"abc".trimAsciiEnd == "abc".toSlice" abc".trimAsciiEnd == " abc".toSlice"abc \t ".trimAsciiEnd == "abc".toSlice" abc ".trimAsciiEnd == " abc".toSlice"abc\ndef\n".trimAsciiEnd == "abc\ndef".toSlice
Equations
Instances For
Equations
- s.trimRight = s.trimAsciiEnd.copy
Instances For
Equations
- s.trimRight = s.trimAsciiEnd
Instances For
Removes leading whitespace from a string by returning a slice whose start position is the first non-whitespace character, or the end position if there is no non-whitespace character.
“Whitespace” is defined as characters for which Char.isWhitespace returns true.
Examples:
"abc".trimAsciiStart == "abc".toSlice" abc".trimAsciiStart == "abc".toSlice"abc \t ".trimAsciiStart == "abc \t ".toSlice" abc ".trimAsciiStart == "abc ".toSlice"abc\ndef\n".trimAsciiStart == "abc\ndef\n".toSlice
Equations
Instances For
Equations
- s.trimLeft = s.trimAsciiStart.copy
Instances For
Equations
- s.trimLeft = s.trimAsciiStart
Instances For
Removes leading and trailing whitespace from a string.
“Whitespace” is defined as characters for which Char.isWhitespace returns true.
Examples:
"abc".trimAscii == "abc".toSlice" abc".trimAscii == "abc".toSlice"abc \t ".trimAscii == "abc".toSlice" abc ".trimAscii == "abc".toSlice"abc\ndef\n".trimAscii == "abc\ndef".toSlice
Instances For
Equations
Instances For
Repeatedly increments a position in a string, as if by String.Pos.Raw.next, while the
predicate p returns true for the character at the position. Stops incrementing at
the end of the string or when p returns false for the current character.
Examples:
let s := " a "; ((0 : Pos.Raw).nextWhile s Char.isWhitespace).get s = 'a'let s := "a "; ((0 : Pos.Raw).nextWhile s Char.isWhitespace).get s = 'a'let s := "ba "; (Pos.Raw.nextWhile s Char.isWhitespace 0).get s = 'b'
Equations
- String.Pos.Raw.nextWhile s p i = Substring.Raw.takeWhileAux s s.rawEndPos p i
Instances For
Equations
- s.nextWhile p i = String.Pos.Raw.nextWhile s p i
Instances For
Equations
- String.Internal.nextWhileImpl s p i = String.Pos.Raw.nextWhile s p i
Instances For
Repeatedly increments a position in a string, as if by String.Pos.Raw.next, while the predicate
p returns false for the character at the position. Stops incrementing at the end of
the string or when p returns true for the current character.
Examples:
let s := " a "; (Pos.Raw.nextUntil s Char.isWhitespace 0).get s = ' 'let s := " a "; (Pos.Raw.nextUntil s Char.isAlpha 0).get s = 'a'let s := "a "; (Pos.Raw.nextUntil s Char.isWhitespace 0).get s = ' '
Equations
- String.Pos.Raw.nextUntil s p i = String.Pos.Raw.nextWhile s (fun (c : Char) => !p c) i
Instances For
Equations
- s.nextUntil p i = String.Pos.Raw.nextUntil s p i
Instances For
If pat matches a prefix of s, returns the remainder. Returns none otherwise.
Use String.dropPrefix to return the slice
unchanged when pat does not match a prefix.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".dropPrefix? "red " == some "green blue".toSlice"red green blue".dropPrefix? "reed " == none"red green blue".dropPrefix? 'r' == some "ed green blue".toSlice"red green blue".dropPrefix? Char.isLower == some "ed green blue".toSlice
Equations
- s.dropPrefix? pat = s.toSlice.dropPrefix? pat
Instances For
If pat matches a suffix of s, returns the remainder. Returns none otherwise.
Use String.dropSuffix to return the slice
unchanged when pat does not match a suffix.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".dropSuffix? " blue" == some "red green".toSlice"red green blue".dropSuffix? "bluu " == none"red green blue".dropSuffix? 'e' == some "red green blu".toSlice"red green blue".dropSuffix? Char.isLower == some "red green blu".toSlice
Equations
- s.dropSuffix? pat = s.toSlice.dropSuffix? pat
Instances For
If pat matches a prefix of s, returns the remainder. Returns s unmodified
otherwise.
Use String.dropPrefix? to return none when pat does not match a prefix.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".dropPrefix "red " == "green blue".toSlice"red green blue".dropPrefix "reed " == "red green blue".toSlice"red green blue".dropPrefix 'r' == "ed green blue".toSlice"red green blue".dropPrefix Char.isLower == "ed green blue".toSlice
Equations
- s.dropPrefix pat = s.toSlice.dropPrefix pat
Instances For
Equations
- s.stripPrefix pre = (s.dropPrefix pre).toString
Instances For
Equations
- s.stripPrefix pre = s.dropPrefix pre
Instances For
If pat matches a suffix of s, returns the remainder. Returns s unmodified
otherwise.
Use String.dropSuffix? to return none when pat does not match a prefix.
This is a cheap operation because it does not allocate a new string to hold the result.
To convert the result into a string, use String.Slice.copy.
This function is generic over all currently supported patterns.
Examples:
"red green blue".dropSuffix " blue" == "red green".toSlice"red green blue".dropSuffix "bluu " == "red green blue".toSlice"red green blue".dropSuffix 'e' == "red green blu".toSlice"red green blue".dropSuffix Char.isLower == "red green blu".toSlice
Equations
- s.dropSuffix pat = s.toSlice.dropSuffix pat
Instances For
Equations
- s.stripSuffix suff = (s.dropSuffix suff).toString
Instances For
Equations
- s.stripSuffix suff = s.dropSuffix suff