从NSString中删除字符?

97
NSString *myString = @"A B C D E F G";

我想要去掉空格,使新字符串为"ABCDEFG"。

6个回答

283
你可以使用:

你可以使用:

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

请使用等宽字体格式化代码片段以提高可读性。目前,区分第一个字符串有点棘手。 - Mike Abdullah
4
注意,“occurrences”的拼写中有两个r。 - user113397
加1,希望达到256。SMH - Will Von Ullrich
只有当“空格”是良好的ASCII值=32(%20)字符时,此方法才有效。要删除所有可能的空白字符,请使用Jim Dovey的解决方案。 - Linasses

79

如果你想同时支持多个空格,或者支持任何空白符号,可以这样做:

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

5
它更适用于一般使用。 - mxg
我喜欢它!我想要移除电话号码中的所有特殊字符,只保留数字。 - karim
更简单的写法:yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - Daniel
3
仅裁剪字符串开头和结尾的匹配字符,因此 A B C D E F 将变为 A B C D E F - Jim Dovey

11

摘自NSString

stringByReplacingOccurrencesOfString:withString:

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

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

参数

目标

The string to replace.

替换

The string with which to replace target.

返回值

一个新的字符串,其中接收者中所有目标出现的地方都被替换为替换文本。


10

所有上述方法都可以正常工作。但正确的方法是:

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

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

谢谢


8
不,它只会删除字符串开头和结尾的空格,而不会删除其他字符之间的空格。 - Jim Dovey
@JimDovey 我已经在我的评论中提到了这件事。 #它的作用类似于TRIM方法。它将删除所有前后空格。# - Mitesh Khatri
2
@MiteshKhatri 你做了,但它仍然没有解决原始问题,即从字符串中间删除所有空格,而不仅仅是前导和尾随空格。 - Jim Dovey
@JimDovey,要删除所有空格,请使用以下代码: MyStr = [MyStr stringByReplacingOccurrencesOfString:@" " withString:@""]; - Mitesh Khatri
1
这仅会移除 ASCII 空格字符;像零宽空格、Unicode 不间断空格、换行符、进纸符、制表符、垂直制表符等其他字符仍将保留在字符串中。因此,[NSCharacterSet whitespaceCharacterSet][NSCharacterSet whitespaceAndNewlineCharacterSet] 存在的意义就在于此。 - Jim Dovey

6

如果该字符串是可变的,则可以使用以下形式就地对其进行转换:

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

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

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

4
你可以尝试这个。
- (NSString *)stripRemoveSpaceFrom:(NSString *)str {
    while ([str rangeOfString:@"  "].location != NSNotFound) {
        str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    }
    return str;
}

希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接