追加到 NSString 方法的开头
Posted
技术标签:
【中文标题】追加到 NSString 方法的开头【英文标题】:Append to beginning of NSString method 【发布时间】:2013-01-17 23:04:14 【问题描述】:我想在 NSString B
前面附加 NSString A
。是否有内置方法可以追加到 NSString 的开头而不是 NSString 的结尾?
我知道我可以使用stringWithFormat
,但是使用stringWithFormat
和stringByAppendingString
将文本添加到NSString 的末尾有什么区别?
【问题讨论】:
【参考方案1】:如果可以追加到字符串的末尾,则可以追加到字符串的开头。
追加
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"
【讨论】:
【参考方案2】:单线解决方案:
myString = [@"pretext" stringByAppendingString:myString];
【讨论】:
【参考方案3】:你也可以使用 stringWithFormat:
NSString *A = @"ThisIsStringA";
NSString *B = @"ThisIsStringB";
B = [NSString stringWithFormat:@"%@%@",A,B];
stringByAppendingString 是 NSString 的一个实例方法, stringWithFormat 是 NSString 类的一个类方法。
【讨论】:
instance vs class 对 NSString "B" 有影响吗?使用一个比另一个有什么优势? 你必须学习面向对象的编程,这是基本原理 我知道实例方法和类方法是不同的,但是一旦你使用了 NSString "B" 这对可用性有何影响? 我不太擅长用正确的英语解释它我需要的不仅仅是一本书【参考方案4】:可能值得指出的是,没有“将一个字符串附加到另一个字符串”这样的事情。 NSString 是不可变的。
在任何情况下,您都是在“创建一个由一个字符串跟随另一个字符串组成的新字符串”。
将新创建的字符串放回同一个变量并不重要。
您永远不会“将文本添加到字符串的末尾”。
【讨论】:
【参考方案5】:这里我有 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
【讨论】:
以上是关于追加到 NSString 方法的开头的主要内容,如果未能解决你的问题,请参考以下文章
使用 Nastaleeq Urdu 字体的内容的 HTML 文本到 NSString 转换
iOS基础-NSString及NSMutableString剖析