Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift正则表达式将字符串拆分为具有长度的子字符串数组_Swift_Regex_Nsregularexpression - Fatal编程技术网

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

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 -

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

子字符串将小于或等于一个恒定长度(例如:总共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"]
敏捷的棕色狐狸跳过懒惰的狗应该分成[“敏捷的”、“棕色的狐狸”、“跳过的”、“懒惰的”、“狗”]

=>数组中的每个项小于或等于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,它可能不起作用,但无论如何,您真的应该分享您的尝试。这表明你的努力是真诚的。它还向我们建议了您在这个主题上已经做了哪些研究。感谢您的帮助,但我正在寻找正则表达式解决方案。感谢您的帮助,但我正在寻找正则表达式解决方案。