仅替换字符串中的第一个字符 | 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"