IOS如何在swift中获取String.range(of:String)倍数
我的文本是IOS如何在swift中获取String.range(of:String)倍数,ios,swift,swift3,nsmutablestring,Ios,Swift,Swift3,Nsmutablestring,我的文本是 let myString: NSAttributedString = <siren> 123123 <siren> 123123 <siren> let myRange = myString.string.range(of:"<siren>") let newString = NSMutableAttributedString() newString.append(myString) if myRange != nil{ newSt
let myString: NSAttributedString = <siren> 123123 <siren> 123123 <siren>
let myRange = myString.string.range(of:"<siren>")
let newString = NSMutableAttributedString()
newString.append(myString)
if myRange != nil{
newString.replaceCharacters(in: NSRange(myRange, in:myString.string),
with:myAttributeString as NSAttributedString!)
}
让myString:nsAttributeString=123123
让myRange=myString.string.range(共:“”)
让newString=nsmutableAttributeString()
newString.append(myString)
如果是myRange!=零{
newString.replaceCharacters(在:NSRange(myRange,在:myString.string中),
使用:myAttributeString作为NSAttributeString!)
}
如果myString
有一个
,这是有效的,但当它有两个以上
仅更换第一个
我认为String.range
返回第一个值
如何查找所有范围?如果要查找所有范围,可以尝试使用此问题的解决方案 但是,如果您的主要目的是替换某些字符串/模式的出现,您可以添加这样的扩展:
extension String {
func replacing(pattern: String, withTemplate: String) throws -> String {
let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
return regex.stringByReplacingMatches(in: self,
options: [],
range: NSRange(0 ..< utf16.count),
withTemplate: withTemplate)
}
}
扩展字符串{
func替换(模式:字符串,带模板:字符串)抛出->字符串{
让regex=try NSRegularExpression(模式:模式,选项:。不区分大小写)
返回regex.stringByReplacingMatches(in:self,
选项:[],
范围:NSRange(0..
a)这不是工作代码。b) 不要以大写字母开头变量,这样很难根据变量确定类。请使用字符串更新可能重复的工作,然后将其转换为属性字符串