【问题标题】:iPhone-SDK:Remove white spaces from a paragraph string?iPhone-SDK:从段落字符串中删除空格?
【发布时间】:2010-11-28 09:15:53
【问题描述】:

我在一个字符串中有两个段落。但是内容在段落字符串之间有很多空格。我想从这个大段落字符串中删除空格。我尝试使用 NSString *outPutStr = [outPutStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 但它不会删除段落字符串中的空格。它什么都不做。

有人可以指导我提供样品吗?

谢谢。

分离/

【问题讨论】:

    标签: iphone


    【解决方案1】:

    如果你使用很棒的框架RegexKitLite,它很容易嵌入到 iPhone 项目中:

    NSString *cleanString = [yourStringWithWhiteSpaces stringByReplacingOccurrencesOfRegex:@" +" withString:@" "];
    

    这表示只要您发现任何长度超过 1 个字符的空格都用一个空格替换。我不知道你的来源,但你可以通过使用简单的换行符和回车符来做同样的事情

    NSString *cleanerString = [cleanString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
    NSString *theCleanestString = [cleanerString stringByReplacingOccurrencesOfString:@"\r" withString:@""];
    

    注意*在代码中有更简洁的方法可以做到这一点,将它们组合成一个步骤,但这是一种将其分解的方法,因此您可以轻松了解正在发生的事情并有助于调试。

    【讨论】:

      【解决方案2】:

      听起来您想要保留单词之间的单个空格,但您可能希望摆脱段落之间的一系列许多空格。有多种方法可以做到这一点,但这里有一种很容易编码:

      NSMutableString* newStr = [NSMutableString stringWithString:oldStr];
      NSUInteger numReplacements;
      do {
        NSRange fullRange = NSMakeRange(0, [newStr length]);
        numReplacements = [newStr replaceOccurrencesOfString:@"  " withString:@" "
                                                     options:0 range:fullRange];
      } while(numReplacements > 0);
      

      阅读replaceOccurrencesOfString:withString:options:range: 方法(NSMutableString)以查看一些详细信息。

      这不是最有效的,但它确实有效,如果您只处理少量的非大字符串,则执行速度不会很显着。

      顺便说一句,您需要多次替换,因为例如,仅执行一次可能会将四个连续的空格替换为两个连续的空格,而您仍然会留下多个空格。

      【讨论】:

      • 是的,正如你所说,我想这样做,正确。但是我的字符串太大了,它有 4 个段落,有很多空格。我不知道如何在此处附加我的内容文本文件,以便您可以查看并据此提出建议。我可以用 cmets 附加文件吗?
      • 如果此代码有效,则无需发布您的特定字符串。它没有按照您想要的方式工作吗?我不知道如何在 stackoverflow 中附加文本文件(也许不可能?)但是,如果您可以在网页上发布字符串,则可以添加指向该页面的链接。
      【解决方案3】:

      将所有被非空格字符包围的空格字符替换为字符串中不太可能出现的字符,例如“•”。 (您可以搜索文本找到这样的字符。在好的空格字符之后,将要保留的字符替换为该字符,然后遍历并删除每个空格字符(或将它们全部替换为单个空格)。最后, 遍历并用空格替换 • 字符。

      【讨论】:

        【解决方案4】:

        我建议在 NSString 上添加一个类别来以这种方式规范化字符串。

        @implementation NSString (NormalizedString)
        
        -(NSString*)stringByNormalizingCharacterInSet:(NSCharacterSet*)characterSet
                                           withString:(NSString*)replacement;
        {
          NSMutableString* result = [NSMutableString string];
          NSScanner* scanner [NSScanner scannerWithString:self];
          while (![scanner isAtEnd]) {
            if ([scanner scanCharactersFromSet:characterSet intoString:NULL) {
              [result appendString:replacement];
            }
            NSString* stringPart = nil;
            if ([scanner scanUpToCharactersFromSet:characterSet intoString:&stringPart]) {
              [result appendString:stringPart];
            }
          }
          return [[result copy] autorelease];
        }
        
        @end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-25
          • 2020-10-08
          • 1970-01-01
          • 1970-01-01
          • 2011-09-21
          • 2017-11-20
          相关资源
          最近更新 更多