Swift 正则表达式将字符串拆分为具有长度的子字符串数组

标签 swift regex nsregularexpression

如何将输入的字符串拆分为字符串数组?

子字符串将小于或等于固定长度(例如:总共 10 个字符。)

子字符串只会在空格处被分割。

Ex: The quick brown fox jumps over the lazy dog 应该拆分成数组 ["The quick","brown fox","jumps over","the lazy", "dog"]

=> 数组中的每一项小于或等于 10 个字符并以空格分隔。

最佳答案

您可以使用 "(.{1,10})(\\s+|$)",匹配 1 到 10 个字符,以空格或行尾结束。

let string = "The quick brown fox jumps over the lazy dog"
let regex = try! NSRegularExpression(pattern: "(.{1,10})(\\s+|$)")
let range = NSRange(string.startIndex..., in: string)
let results = regex.matches(in: string, options: .anchored, range: range)
    .map { match -> Substring in
        let range = Range(match.range(at: 1), in: string)!
        return string[range]
}

产量:

["The quick", "brown fox", "jumps over", "the lazy", "dog"]

与所有正则表达式答案一样,给猫剥皮的方法有很多,但这似乎是一种简单的方法。

不过,这确实回避了如果遇到超过 10 个字符的单词该怎么办的问题。例如,如果您想允许这些长单词而不将它们拆分,您可以使用 "(.{1,10}|\\S{11,})(\\s+|$)".

关于Swift 正则表达式将字符串拆分为具有长度的子字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49702942/

相关文章:

swift - 如何快速更新 UIView

javascript - 从 UIWebView 添加 javascript 到页面中

regex - 跳过多个号码

Java获取正则表达式的匹配组

ios - 接受 hh :mm format 中文本字段的时间输入的正则表达式应该是什么

iOS swift : Maintaining Toggle Button State In A Cell

swift - 非可选 IBOutlet 返回 fatal error : when referenced from another UIViewController class

java - Java 中的字符串模式不匹配

regex - 为什么正则表达式不起作用? swift

azure-aks - Azure 安全中心发出高警报 "trusted registries only allowed for container images"