Swift正则表达式将字符串拆分为具有长度的子字符串数组
如何将输入字符串拆分为字符串数组 子字符串将小于或等于一个恒定长度(例如:总共10个字符) 子字符串将仅在空白处拆分Swift正则表达式将字符串拆分为具有长度的子字符串数组,swift,regex,nsregularexpression,Swift,Regex,Nsregularexpression,如何将输入字符串拆分为字符串数组 子字符串将小于或等于一个恒定长度(例如:总共10个字符) 子字符串将仅在空白处拆分 import Foundation var foxOverDog = "The quick brown fox jumps over the lazy dog".components(separatedBy: " ") var foxOverDogFitted = foxOverDog.reduce(into: [""]) { if $0[$0.endIndex -
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"]
敏捷的棕色狐狸跳过懒惰的狗应该分成[“敏捷的”、“棕色的狐狸”、“跳过的”、“懒惰的”、“狗”]
=>数组中的每个项小于或等于10个字符,并由空白分隔。
代码>导入基础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"]
var foxOverDog=“快速棕色狐狸跳过懒狗”。组件(分隔符:“”)
var foxOverDogFitted=foxOverDog.reduce(转换为:[“”]){
如果$0[$0.endIndex-1]。计数+1。计数0?”:“”
$0[$0.endIndex-1]+=分隔符+$1
}否则{
$0。追加($1)
}
}
打印(foxOverDogFitted)/[“快跑的”、“棕色的狐狸”、“跳过的”、“懒惰的”、“狗”]
<代码>代码>导入基础
var foxOverDog=“快速棕色狐狸跳过懒狗”。组件(分隔符:“”)
var foxOverDogFitted=foxOverDog.reduce(转换为:[“”]){
如果$0[$0.endIndex-1]。计数+1。计数0?”:“”
$0[$0.endIndex-1]+=分隔符+$1
}否则{
$0。追加($1)
}
}
打印(foxOverDogFitted)/[“快跑的”、“棕色的狐狸”、“跳过的”、“懒惰的”、“狗”]
您可以使用“(.{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]
}
屈服:
[“敏捷的”、“棕色的狐狸”、“跳过的”、“懒惰的”、“狗”]
就像所有正则表达式的答案一样,有很多方法可以剥猫皮,但这似乎是一个简单的方法
然而,如果遇到一个超过10个字符的单词,该怎么办呢。例如,如果您希望在不拆分长单词的情况下允许使用这些长单词,您可以使用“(.{1,10}\\\S{11,})(\\S+\$)”
您可以使用”(.{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]
}
屈服:
[“敏捷的”、“棕色的狐狸”、“跳过的”、“懒惰的”、“狗”]
就像所有正则表达式的答案一样,有很多方法可以剥猫皮,但这似乎是一个简单的方法
然而,如果遇到一个超过10个字符的单词,该怎么办呢。例如,如果你想允许那些长单词不拆分,你可以使用
“(.{1,10}\\S{11,})(\\S+$)”
你忘了添加到目前为止编写的代码。我尝试了一些,但没有用。尼克,它可能没有用,但无论如何,你真的应该分享你的尝试。这表明你的努力是真诚的。它还向我们建议了您在这个主题上已经做了哪些研究。您忘了添加到目前为止编写的代码。我尝试了一些,但没有效果。Nick,它可能不起作用,但无论如何,您真的应该分享您的尝试。这表明你的努力是真诚的。它还向我们建议了您在这个主题上已经做了哪些研究。感谢您的帮助,但我正在寻找正则表达式解决方案。感谢您的帮助,但我正在寻找正则表达式解决方案。