gpt4 book ai didi

string - 如何快速替换字符串中的特定单词?

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:17 24 4
gpt4 key购买 nike

我正在寻找一种快速替换字符串中单词的方法。谁能帮忙?

这是我目前所拥有的,我可以找到特定的单词,但我不知道如何替换它...

     var str = "helo, playgound"

var findWords = ["helo","playgound"]
var replaceWords = ["hello","playground"]

extension String {
var wordList:[String] {
return "".join(componentsSeparatedByCharactersInSet(NSCharacterSet.punctuationCharacterSet())).componentsSeparatedByString(" ")
}
}

func stringToArray() -> Array<String> {
var arr = str.wordList
return arr
}

func correction(var _arr:Array<String>) -> String{

for var i = 0; i < _arr.count; i++ {
if str.lowercaseString.rangeOfString(findWords[i]) != nil {
println("exists")
}
}
return str
}

最佳答案

这取决于您对“词”的定义。如果您正在寻找“单词”的智能内置概念,最简单的解决方案可能是使用 NSRegularExpression,它知道“单词”边界在哪里:

var s = NSMutableString(string:"hello world, go to hell")
let r = NSRegularExpression(
pattern: "\\bhell\\b",
options: .CaseInsensitive, error: nil)!
r.replaceMatchesInString(
s, options: nil, range: NSMakeRange(0,s.length),
withTemplate: "heaven")

之后s就是“hello world, go to heaven”,就是正确答案;我们替换了单词中的“hell”,但没有替换“hello”中的“hell”。请注意,我们也在不区分大小写地进行匹配,这似乎是您的需求之一。

这个例子展示了如何只做一对(“ hell ”和“天堂”),但是很容易将它抽象成一个方法,这样你就可以为更多的对一次又一次地做:

var str = "helo, playgound"

var findWords = ["helo", "playgound"]
var replaceWords = ["hello", "playground"]

func correct(str:String, orig:String, repl:String) -> String {
var s = NSMutableString(string:str)
let r = NSRegularExpression(
pattern: "\\b\(orig)\\b",
options: .CaseInsensitive, error: nil)!
r.replaceMatchesInString(
s, options: nil, range: NSMakeRange(0,s.length),
withTemplate: repl)
return s
}

for pair in Zip2(findWords,replaceWords) {
str = correct(str, pair.0, pair.1)
}

str // hello, playground

关于string - 如何快速替换字符串中的特定单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27871337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com