localizedIntegerPercentage(locale:)
Creates a regex component that matches a localized percentage string, capturing it as a double-precision floating-point value.
Declaration
static func localizedIntegerPercentage(locale: Locale) -> SelfParameters
- locale:
The locale that specifies formatting conventions to use when matching percentage strings.
Return Value
A RegexComponent that matches percentage substrings as Int instances.
Discussion
This method matches percentage substrings in accordance with the provided locale. For example, in the en_US locale, 75 formats as 75%, and 1234 formats as 1,234%. Other locales use different separators, or omit them entirely. Because of this, the regex needs to know what locale convention to match against.
The following example creates a Regex that matches a date and time followed by whitespace and a percentage string formatted in the en_US locale. It then matches this regex against a source string containing a date with this format, some whitespace, and a percentage string.
let enUSLocale = Locale(languageCode: .english, languageRegion: .unitedStates)
let source = "7/31/2022, 5:15:12 AM 75%"
let matcher = Regex {
One(.dateTime(date: .numeric,
time: .standard,
locale: enUSLocale,
timeZone: TimeZone(identifier: "PST")!))
OneOrMore(.horizontalWhitespace)
Capture {
One(.localizedIntegerPercentage(locale: enUSLocale))
}
}
guard let match = source.firstMatch(of: matcher) else { return }
let percentage = match?.1 // percentage == 75