そのためには、String
をループして、それぞれがcharacters
のトークンであるかどうかを確認する必要があります。このようにをString
にすることができます。
extension String {
func stringTokens(splitMarks: Set<String>) -> [String] {
var string = ""
var desiredOutput = [String]()
for (index, ch) in self.characters.enumerated() {
if splitMarks.contains(String(ch)) {
if !string.isEmpty {
desiredOutput.append(string)
}
desiredOutput.append(String(ch))
string = ""
}
else {
string += String(ch)
}
}
if !string.isEmpty {
desiredOutput.append(string)
}
return desiredOutput
}
}
このようにこの関数を呼び出すことができます。あなたは文字列で分割されたマークの次の出現を見つける にループ内rangeOfCharacter(from: CharacterSet, ...)
を使用し、次いで 追記前の部分とに分離することができ、両方
let input = "foo&bar|hello"
print(input.stringTokens(splitMarks: ["&", "|"]))
出力
["foo", "&", "bar", "|", "hello"]
このためのRegexリファレンスブック。 'NSRegularExpression'をチェックしてください。時には(ときどき)それは答えです... –
にコンポーネントを追加
– Grimxn