Ios 从字符串中删除单词数组
我有一些数据,其中包括我不想显示的某些单词。在将字符串显示到标签之前,我试图从字符串中删除这些单词集。有了我的代码,我可以一个字一个字地完成这个任务,但是必须输入X次代码才能完成每个字。立即删除这组单词的正确方法是什么 以下是我当前使用的代码:Ios 从字符串中删除单词数组,ios,arrays,swift,string,Ios,Arrays,Swift,String,我有一些数据,其中包括我不想显示的某些单词。在将字符串显示到标签之前,我试图从字符串中删除这些单词集。有了我的代码,我可以一个字一个字地完成这个任务,但是必须输入X次代码才能完成每个字。立即删除这组单词的正确方法是什么 以下是我当前使用的代码: let remove = ["Production", "Productions", "Studio", "Studios", "Entertainment", "Pictures", "Company", "Films", "Media"]
let remove = ["Production", "Productions", "Studio", "Studios",
"Entertainment", "Pictures", "Company", "Films", "Media"]
if let range = string.range(of: remove) {
string.removeSubrange(range)
}
self.label.text = string
使用此代码,我在范围
行收到此错误:
参数类型“[String]”与预期的类型“StringProtocol”不一致
你可以试试
remove.forEach {
if let range = string.range(of:$0) {
string.removeSubrange(range)
}
}
由于范围(of:)
需要字符串而不是数组您可以尝试
remove.forEach {
if let range = string.range(of:$0) {
string.removeSubrange(range)
}
}
由于range(of:)
需要字符串而不是数组,因此错误很明显
range(of
的参数是字符串而不是数组([String]
)
你需要一个循环
let wordsToRemove = ["Production", "Productions", "Studio", "Studios", "Entertainment", "Pictures", "Company", "Films", "Media"]
for word in wordsToRemove {
if let range = string.range(of: word) {
string.removeSubrange(range)
}
}
self.label.text = string
另一种方法是正则表达式
let trimmedString = string.replacingOccurrences(of: "(Productions?|Studios?|Entertainment|Pictures|Company|Films|Media)",
with: "",
options: .regularExpression)
self.label.text = trimmedString
错误很明显
range(of
的参数是字符串而不是数组([String]
)
你需要一个循环
let wordsToRemove = ["Production", "Productions", "Studio", "Studios", "Entertainment", "Pictures", "Company", "Films", "Media"]
for word in wordsToRemove {
if let range = string.range(of: word) {
string.removeSubrange(range)
}
}
self.label.text = string
另一种方法是正则表达式
let trimmedString = string.replacingOccurrences(of: "(Productions?|Studios?|Entertainment|Pictures|Company|Films|Media)",
with: "",
options: .regularExpression)
self.label.text = trimmedString
您可以指定允许的单词,然后使用Filter
删除不需要的单词:
var strings = ["Hello","Playground","World","Earth"]
var allowedStrings = "Playground Earth" // Specify using space
let seperated:[String] = allowedStrings.components(separatedBy: " ")
for i in seperated {
if strings.contains(i) {
strings = strings.filter{$0 != i}
}
}
print(strings) // ["Playground", "Earth"]
您可以指定允许的单词,然后使用Filter
删除不需要的单词:
var strings = ["Hello","Playground","World","Earth"]
var allowedStrings = "Playground Earth" // Specify using space
let seperated:[String] = allowedStrings.components(separatedBy: " ")
for i in seperated {
if strings.contains(i) {
strings = strings.filter{$0 != i}
}
}
print(strings) // ["Playground", "Earth"]
我更喜欢ALT表达式。谢谢!虽然替换的单词留空了,即使没有一个空间用于<代码>:“”。这有一个解决办法吗?代码应该工作。它不考虑单词之前或之后的空间(以及<代码> ReaveSubRange<代码>解决方案)。如果你想删除一个超前的空间,也可以把这个模式改为<代码>”(产品…………/代码)。我更喜欢alt表达式。谢谢!虽然替换的单词空空如也,即使没有一个空间用于<代码>:“”。这个代码应该工作。它不考虑单词之前或之后的空间。(以及removeSubrange
解决方案)。如果要同时删除前导空格,请将模式更改为“\\s(Productions?|…