【问题标题】:Append to beginning of NSString method追加到 NSString 方法的开头
【发布时间】:2013-01-17 23:04:14
【问题描述】:

我想在 NSString B 前面附加 NSString A。是否有内置方法可以追加到 NSString 的开头而不是 NSString 的结尾?

我知道我可以使用stringWithFormat,但是使用stringWithFormatstringByAppendingString 将文本添加到NSString 的末尾有什么区别?

【问题讨论】:

    标签: ios objective-c swift nsstring append


    【解决方案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
              }
          } 
          

          【讨论】:

            猜你喜欢
            • 2021-12-13
            • 2013-09-19
            • 1970-01-01
            • 2017-02-14
            • 1970-01-01
            • 2013-06-03
            • 2012-02-14
            • 2018-11-25
            • 2011-11-07
            相关资源
            最近更新 更多