我想在 NSStringA
前面附加 NSString B
。是否有内置方法可以附加到 NSString 的开头而不是 NSString 的结尾?
我知道我可以使用,但是使用和将文本添加到 NSString 的末尾有stringWithFormat
什么区别?stringWithFormat
stringByAppendingString
我想在 NSStringA
前面附加 NSString B
。是否有内置方法可以附加到 NSString 的开头而不是 NSString 的结尾?
我知道我可以使用,但是使用和将文本添加到 NSString 的末尾有stringWithFormat
什么区别?stringWithFormat
stringByAppendingString
如果可以追加到字符串的末尾,则可以追加到字符串的开头。
附加
NSString* a = @"A";
NSString* b = @"B";
NSString* result = [a stringByAppendingString:b]; // Prints "AB"
前置
NSString* a = @"A";
NSString* b = @"B";
NSString* result = [b stringByAppendingString:a]; // Prints "BA"
单线解决方案:
myString = [@"pretext" stringByAppendingString:myString];
您也可以使用 stringWithFormat :
NSString *A = @"ThisIsStringA";
NSString *B = @"ThisIsStringB";
B = [NSString stringWithFormat:@"%@%@",A,B];
stringByAppendingString 是 NSString 的实例方法,stringWithFormat 是 NSString 类的类方法。
可能值得指出的是,没有“将一个字符串附加到另一个字符串”这样的事情。NSString 是不可变的。
在每种情况下,您都在“创建一个由一个字符串跟随另一个字符串组成的新字符串”。
将新创建的字符串放回同一个变量并不重要。
您永远不会“将文本添加到字符串的末尾”。
在这里,我在 Swift 中有解决方案:
extension String {
// Add prefix only, if there is not such prefix into a string
mutating func addPrefixIfNeeded(_ prefixString: String?) {
guard let stringValue = prefixString, !self.hasPrefix(stringValue) else {
return
}
self = stringValue + self
}
// Add force full prefix, whether there is already such prefix into a string
mutating func addPrefix(_ prefixString: String?) {
guard let stringValue = prefixString else {
return
}
self = stringValue + self
}
}