【问题标题】:Remove characters from NSString?从 NSString 中删除字符?
【发布时间】:2010-10-29 20:58:06
【问题描述】:
NSString *myString = @"A B C D E F G";

我想删除空格,所以新字符串是“ABCDEFG”。

【问题讨论】:

    标签: objective-c nsstring


    【解决方案1】:

    如果您想一次支持多个空格,或支持任何空格,您可以这样做:

    NSString* noSpaces =
        [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                               componentsJoinedByString:@""];
    

    【讨论】:

    • 一般用途比较好用。
    • 我喜欢!我想删除电话号码中的所有特殊字符并只保留数字。
    • 简单多了:yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    • 修剪只删除出现在字符串开头和结尾的匹配字符,因此 ` A B C D E F ` 将变为 A B C D E F。
    【解决方案2】:

    以上都可以正常工作。但是正确的方法是这样的:

    yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    

    它将像 TRIM 方法一样工作。它将删除所有前后空格。

    谢谢

    【讨论】:

    • 不,它只删除字符串开头和结尾的空格,而不是其他字符之间的空格。
    • @JimDovey 我已经在评论中提到了这件事。 #它将像 TRIM 方法一样工作。它将删除所有前后空格。#
    • @MiteshKhatri 你这样做了,但它仍然没有解决最初的问题,即删除字符串中间的所有空格,而不仅仅是前导和尾随空格。
    • @JimDovey 删除所有空格使用以下代码: MyStr = [MyStr stringByReplacingOccurrencesOfString:@" " withString:@""];
    • 那仍然只会删除 ASCII 空格字符;诸如零宽度空格、Unicode 不间断空格、换行符、换页符、制表符、垂直制表符等内容仍将保留在字符串中。因此存在[NSCharacterSet whitespaceCharacterSet] 和[NSCharacterSet whitespaceAndNewlineCharacterSet]。
    【解决方案3】:

    你可以试试这个

    - (NSString *)stripRemoveSpaceFrom:(NSString *)str {
        while ([str rangeOfString:@"  "].location != NSNotFound) {
            str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
        }
        return str;
    }
    

    希望对你有所帮助。

    【讨论】:

      【解决方案4】:

      如果字符串是可变的,那么您可以使用以下形式对其进行原地转换:

      [string replaceOccurrencesOfString:@" "
                              withString:@""
                                 options:0
                                   range:NSMakeRange(0, string.length)];
      

      如果您希望结果是输入字符串的可变实例,这也很有用:

      NSMutableString * string = [concreteString mutableCopy];
      [string replaceOccurrencesOfString:@" "
                              withString:@""
                                 options:0
                                   range:NSMakeRange(0, string.length)];
      

      【讨论】:

        【解决方案5】:

        你可以使用:

        NSString *stringWithoutSpaces = [myString 
           stringByReplacingOccurrencesOfString:@" " withString:@""];
        

        【讨论】:

        • 请您将代码 sn-ps 格式化为等宽字体以便于阅读。目前区分第一个字符串有点棘手
        • 请注意,“occurrences”用两个 r 拼写。
        • 加1希望达到256.smh
        • 这仅适用于“空格”表现良好的 ASCII 值 = 32 (%20) 个字符。要删除所有可能的空白字符,请使用以下 Jim Dovey 的解决方案。
        【解决方案6】:

        取自NSString

        stringByReplacingOccurrencesOfString:withString:
        

        返回一个新字符串,其中接收器中所有出现的目标字符串都被另一个给定的字符串替换。

        - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
        

        参数

        目标

        The string to replace.
        

        替换

        The string with which to replace target.
        

        返回值

        一个新字符串,其中接收器中所有出现的目标都被替换替换。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多