检测 UITextField 中的提及不起作用
Detecting mentions in UITextField not working
我正在尝试检测 UITextField
中的提及(使用 @
)。基本上,我要做的是将用户输入的文本 String
转换为 array
,然后遍历每个项目以查看是否有 @
前缀。出于某种原因,尽管我在提及(或仅提及)周围输入了更长的文本,但它显示 1 个项目是一个空字符串。我显然做错了什么,但我不知道是什么
if let mentionsArray = self.commentTextField.text?.components(separatedBy: CharacterSet.whitespacesAndNewlines) {
for mention in mentionsArray {
if mention.hasPrefix("@") {
print(mention)
}
}
}
值得一提的是,此代码 运行 位于闭包内部。
更新: 代码确实有效,但下面的评论询问 commentTextField.text
的内容是什么,这让我意识到我清空了在我到达那一点之前的文本字段。
你在我用来从字符串中检测心理文本的扩展名下面。
extension String {
func findMentionText() -> [String] {
var arr_hasStrings:[String] = []
let regex = try? NSRegularExpression(pattern: "(@[a-zA-Z0-9_\p{Arabic}\p{N}]*)", options: [])
if let matches = regex?.matches(in: self, options:[], range:NSMakeRange(0, self.count)) {
for match in matches {
arr_hasStrings.append(NSString(string: self).substring(with: NSRange(location:match.range.location, length: match.range.length )))
}
}
return arr_hasStrings
}
}
您的 commentTextField
可能 是空的 。检查您是否在任何地方清除文本字段。如果为空,components(separatedBy: CharacterSet.whitespacesAndNewlines)
将 return 一个空字符串 "".
我正在尝试检测 UITextField
中的提及(使用 @
)。基本上,我要做的是将用户输入的文本 String
转换为 array
,然后遍历每个项目以查看是否有 @
前缀。出于某种原因,尽管我在提及(或仅提及)周围输入了更长的文本,但它显示 1 个项目是一个空字符串。我显然做错了什么,但我不知道是什么
if let mentionsArray = self.commentTextField.text?.components(separatedBy: CharacterSet.whitespacesAndNewlines) {
for mention in mentionsArray {
if mention.hasPrefix("@") {
print(mention)
}
}
}
值得一提的是,此代码 运行 位于闭包内部。
更新: 代码确实有效,但下面的评论询问 commentTextField.text
的内容是什么,这让我意识到我清空了在我到达那一点之前的文本字段。
你在我用来从字符串中检测心理文本的扩展名下面。
extension String {
func findMentionText() -> [String] {
var arr_hasStrings:[String] = []
let regex = try? NSRegularExpression(pattern: "(@[a-zA-Z0-9_\p{Arabic}\p{N}]*)", options: [])
if let matches = regex?.matches(in: self, options:[], range:NSMakeRange(0, self.count)) {
for match in matches {
arr_hasStrings.append(NSString(string: self).substring(with: NSRange(location:match.range.location, length: match.range.length )))
}
}
return arr_hasStrings
}
}
您的 commentTextField
可能 是空的 。检查您是否在任何地方清除文本字段。如果为空,components(separatedBy: CharacterSet.whitespacesAndNewlines)
将 return 一个空字符串 "".