只替换字符串中的第一个字符迅速

时间:2015-09-29 03:20:05

标签: arrays string swift replace range

我正在尝试替换字符串的第一个字符。使用this answer,我能够将所有当前字符替换为我想要的字符,但我真正需要的是仅在字符开头处替换该字符。

例如,将c替换为t:

原始字符串:杰克很酷 新刺痛:杰克是工具

我当前的代码:

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中的range属性做一些事情。

4 个答案:

答案 0 :(得分:2)

我会使用regex\\b称为单词边界,它在单词字符和非单词字符之间匹配。您也可以使用负面的lookbehind而不是像\\b

这样的(?<!\\S)c
var regex:NSRegularExpression = NSRegularExpression(pattern: "\\bc", options: NSRegularExpressionOptions.CaseInsensitive, error: &ierror)!
var modString = regex.stringByReplacingMatchesInString(myString, options: nil, range: NSMakeRange(0, stringlength), withTemplate: "t")

答案 1 :(得分:0)

var aString ='jack is cool'; var newString = aString.replace('c','t');

答案 2 :(得分:0)

var 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);

答案 3 :(得分:0)

您可以在startIndex中定义开始和结束的范围,以确保它仅替换字符串第一个字符的出现位置:

let coolString = "Cool"
let newString = coolString.stringByReplacingOccurrencesOfString("C", withString: "T", options: [], range: coolString.startIndex...coolString.startIndex)

您可以使用String方法replace()来仅替换String

的第一个字符
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"