仅替换字符串中的第一个字符 | Swift
Replace just the first character in a string | Swift
我正在尝试替换字符串的第一个字符。使用 this answer,我可以用我想要的字符替换所有当前字符,但我真正需要的是只替换位于单词开头的字符。
比如把c换成t:
原字符串:杰克很酷
新 Sting:Jack 是工具
我的当前代码:
let aString: String = "jack is cool"
let toArray: Array = aString.componentsSeparatedByString(" ")
let newString: String = aString.stringByReplacingOccurrencesOfString("c", withString: "t", options: NSStringCompareOptions.LiteralSearch, range: nil)
这将打印为:
"jatk is tool"
我假设我必须对 newString 中的范围属性做一些事情。
我会使用 regex
。 \b
称为单词边界,匹配单词字符和非单词字符。您也可以使用负面回顾而不是像 (?<!\S)c
这样的 \b
var regex:NSRegularExpression = NSRegularExpression(pattern: "\bc", options: NSRegularExpressionOptions.CaseInsensitive, error: &ierror)!
var modString = regex.stringByReplacingMatchesInString(myString, options: nil, range: NSMakeRange(0, stringlength), withTemplate: "t")
var aString = 'jack is cool';
var newString = aString.replace('c','t');
变量a
var oldString = 'Jack is cool';
var newString = oldString.split(' ');
var x = newString[newString.indexOf('cool')].toString();
x = x.replace('c','t');
newString.splice(newString.indexOf('cool'),1,x);
newString = newString.join(' ').toString();
alert(newString);
您可以将范围定义为在 startIndex 处开始和结束,以确保它仅替换字符串第一个字符处的出现:
let coolString = "Cool"
let newString = coolString.stringByReplacingOccurrencesOfString("C", withString: "T", options: [], range: coolString.startIndex...coolString.startIndex)
您可以使用字符串方法 replace() 仅替换字符串的第一个字符
var str = "Cool"
str.replaceRange(str.startIndex...str.startIndex, with: "T")
print(str) // "Tool"
仅将其应用于最后一个词:
var str = "Jack is Cool"
var words = str.componentsSeparatedByString(" ")
if !words.isEmpty {
if !words[words.count-1].isEmpty {
words[words.count-1].replaceRange(str.startIndex...str.startIndex, with: "T")
print( words.last!) // "Tool\n"
}
}
let sentence = words.joinWithSeparator(" ") // "Jack is Tool"
我正在尝试替换字符串的第一个字符。使用 this answer,我可以用我想要的字符替换所有当前字符,但我真正需要的是只替换位于单词开头的字符。
比如把c换成t:
原字符串:杰克很酷
新 Sting:Jack 是工具
我的当前代码:
let aString: String = "jack is cool"
let toArray: Array = aString.componentsSeparatedByString(" ")
let newString: String = aString.stringByReplacingOccurrencesOfString("c", withString: "t", options: NSStringCompareOptions.LiteralSearch, range: nil)
这将打印为:
"jatk is tool"
我假设我必须对 newString 中的范围属性做一些事情。
我会使用 regex
。 \b
称为单词边界,匹配单词字符和非单词字符。您也可以使用负面回顾而不是像 (?<!\S)c
\b
var regex:NSRegularExpression = NSRegularExpression(pattern: "\bc", options: NSRegularExpressionOptions.CaseInsensitive, error: &ierror)!
var modString = regex.stringByReplacingMatchesInString(myString, options: nil, range: NSMakeRange(0, stringlength), withTemplate: "t")
var aString = 'jack is cool'; var newString = aString.replace('c','t');
变量a
var oldString = 'Jack is cool';
var newString = oldString.split(' ');
var x = newString[newString.indexOf('cool')].toString();
x = x.replace('c','t');
newString.splice(newString.indexOf('cool'),1,x);
newString = newString.join(' ').toString();
alert(newString);
您可以将范围定义为在 startIndex 处开始和结束,以确保它仅替换字符串第一个字符处的出现:
let coolString = "Cool"
let newString = coolString.stringByReplacingOccurrencesOfString("C", withString: "T", options: [], range: coolString.startIndex...coolString.startIndex)
您可以使用字符串方法 replace() 仅替换字符串的第一个字符
var str = "Cool"
str.replaceRange(str.startIndex...str.startIndex, with: "T")
print(str) // "Tool"
仅将其应用于最后一个词:
var str = "Jack is Cool"
var words = str.componentsSeparatedByString(" ")
if !words.isEmpty {
if !words[words.count-1].isEmpty {
words[words.count-1].replaceRange(str.startIndex...str.startIndex, with: "T")
print( words.last!) // "Tool\n"
}
}
let sentence = words.joinWithSeparator(" ") // "Jack is Tool"