从NSString中删除字符?

Raj*_*aju 94 objective-c nsstring

NSString *myString = @"A B C D E F G";
Run Code Online (Sandbox Code Playgroud)

我想删除空格,所以新字符串将是"ABCDEFG".

Tom*_*rys 278

你可以使用:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];
Run Code Online (Sandbox Code Playgroud)

  • 请注意,"出现次数"拼写为两个r. (4认同)

Jim*_*vey 78

如果要一次支持多个空格,或者支持任何空格,可以执行以下操作:

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];
Run Code Online (Sandbox Code Playgroud)

  • 它对于一般用法更有用. (5认同)
  • 修剪只在匹配字符出现在字符串的开头和结尾时删除,因此`ABCDEF`将变为`ABCDEF`. (3认同)

vis*_*kh7 11

取自NSString

stringByReplacingOccurrencesOfString:withString:
Run Code Online (Sandbox Code Playgroud)

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

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
Run Code Online (Sandbox Code Playgroud)

参数

目标

The string to replace.
Run Code Online (Sandbox Code Playgroud)

替换

The string with which to replace target.
Run Code Online (Sandbox Code Playgroud)

回报价值

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


Mit*_*tri 11

以上所有都可行.但正确的方法是这样的:

yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
Run Code Online (Sandbox Code Playgroud)

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

谢谢

  • 不,它只删除字符串开头和结尾的空格,而不是其他字符之间的空格. (6认同)
  • @MiteshKhatri你这样做,但它仍然无法解决原始问题,即从字符串中间删除所有空格,而不仅仅是前导和尾随空格. (2认同)

jus*_*tin 6

如果字符串是可变的,那么您可以使用以下形式将其转换为适当的位置:

[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];
Run Code Online (Sandbox Code Playgroud)

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

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