如何将输入字符串拆分为字符串数组?
子字符串将小于或等于常量长度(例如:总共10个字符。)
子字符串只会在空格上分割。
Ex:快速的棕色狐狸跳过懒狗应分成[“快速”,“棕色狐狸”,“跳过”,“懒惰”,“狗”等阵列
=>数组中的每个项目小于或等于10个字符,并用空格分隔。
答案 0 :(得分:4)
您可以使用"(.{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]
}
产量:
["快速","棕色狐狸","跳过","懒惰","狗&# 34]
与所有正则表达式的答案一样,有许多方法可以让猫皮肤变亮,但这似乎是一种简单的方法。
但是,这确实提出了如果遇到超过10个字符的单词该怎么办的问题。例如,如果您想要在不拆分的情况下允许这些长字,则可以使用"(.{1,10}|\\S{11,})(\\s+|$)"
。
答案 1 :(得分:0)
import Foundation
var foxOverDog = "The quick brown fox jumps over the lazy dog".components(separatedBy: " ")
var foxOverDogFitted = foxOverDog.reduce(into: [""]) {
if $0[$0.endIndex - 1].count + $1.count <= 10 {
let separator: String = $0[$0.endIndex - 1].count > 0 ? " " : ""
$0[$0.endIndex - 1] += separator + $1
} else {
$0.append($1)
}
}
print(foxOverDogFitted) // ["The quick", "brown fox", "jumps over", "the lazy", "dog"]