从NSString删除字符?


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

我要删除空格,因此新字符串将为“ ABCDEFG”。

Answers:


280

您可以使用:

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

为了清晰起见,请您可以用等宽字体格式化代码段。目前区分第一个字符串是有点棘手
迈克·阿卜杜拉

4
请注意,“出现”是用两个r拼写的。

加1希望达到256。smh
威尔·冯·乌尔里希(

仅当“空格”的行为符合ASCII值= 32(%20)个字符时,此方法才有效。要删除所有可能的空格字符,请使用下面的Jim Dovey解决方案。
Linasses

80

如果要一次支持一个以上的空间,或支持任何空白,则可以执行以下操作:

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

5
它对于一般用法更有用。
mxg 2011年

我喜欢!我想删除电话号码中的所有特殊字符,并仅保留数字。
karim

容易得多:yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
丹尼尔(Daniel)

3
修剪只会删除匹配的字符,当它们出现在字符串的开头和结尾时,因此ABCDEF会变成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.

返回值

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


11

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

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

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

谢谢


7
不,它只会删除字符串开头和结尾的空格,而不会删除其他字符之间的空格。
Jim Dovey

@ JimDovey我已经在我的评论中提到了这个东西。#它将像TRIM方法一样工作。它将删除所有前面和后面的空格。#
Mitesh Khatri

2
@MiteshKhatri可以,但是仍然不能解决原始问题,即从字符串中间删除所有空格,而不仅仅是前导和尾随空格。
吉姆·多维

@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)];

3

你可以试试这个

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

希望这对您有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.