删除 NSString 中的所有空格

我一直在尝试去除 NSString中的空白,但是没有一种方法是有效的。

我有 "this is a test",我想得到 "thisisatest"

我使用了 whitespaceCharacterSet,它本来是用来消除空白的。

NSString *search = [searchbar.text stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];

但我总是得到同样的字符串,有什么想法吗?

101894 次浏览

使用 stringByReplacingOccurrencesOfString完成简单的任务

NSString *search = [searchbar.text stringByReplacingOccurrencesOfString:@" " withString:@""];

stringByTrimmingCharactersInSet只删除字符串开头和结尾的字符,而不删除中间的字符。

1) 如果只需要从字符串中删除给定的字符(比如空格字符) ,请使用:

[yourString stringByReplacingOccurrencesOfString:@" " withString:@""]

2) 如果你真的需要删除一组字符(不仅仅是空格字符,还有任何空白字符,比如空格、制表符、不可破坏的空格等等) ,你可以使用 whitespaceCharacterSet分割你的字符串,然后再将这些字符合并到一个字符串中:

NSArray* words = [yourString componentsSeparatedByCharactersInSet :[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString* nospacestring = [words componentsJoinedByString:@""];

请注意,最后一种解决方案的优点是可以处理所有的空白字符,而且不仅仅是空格,而且效率比 stringByReplacingOccurrencesOfString:withString:要低一些。因此,如果你只需要删除空格字符,并且确保除了纯空格字符之外没有其他空白字符,那么使用第一种方法。

StringByReplaceingOccurrencesOfString 将替换字符串中的所有空白,而不仅仅是起始和结束

使用

[YourString stringByTrimmingCharactersInSet:[NSCharacterSet  whitespaceAndNewlineCharacterSet]]

我更喜欢这样使用 regex:

NSString *myString = @"this is a test";
NSString *myNewString = [myString stringByReplacingOccurrencesOfString:@"\\s"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [myStringlength])];
//myNewString will be @"thisisatest"

你可以在 NSString 上为自己设置一个类别,这样生活会更加轻松:

- (NSString *) removeAllWhitespace
{
return [self stringByReplacingOccurrencesOfString:@"\\s" withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [self length])];

}

这里也有一个关于它的单元测试方法:

- (void) testRemoveAllWhitespace
{
NSString *testResult = nil;


NSArray *testStringsArray        = @[@""
,@"    "
,@"  basicTest    "
,@"  another Test \n"
,@"a b c d e f g"
,@"\n\tA\t\t \t \nB    \f  C \t  ,d,\ve   F\r\r\r"
,@"  landscape, portrait,     ,,,up_side-down   ;asdf;  lkjfasdf0qi4jr0213 ua;;;;af!@@##$$ %^^ & *  * ()+  +   "
];


NSArray *expectedResultsArray   = @[@""
,@""
,@"basicTest"
,@"anotherTest"
,@"abcdefg"
,@"ABC,d,eF"
,@"landscape,portrait,,,,up_side-down;asdf;lkjfasdf0qi4jr0213ua;;;;af!@@##$$%^^&**()++"
];


for (int i=0; i < [testStringsArray count]; i++)
{
testResult = [testStringsArray[i] removeAllWhitespace];
STAssertTrue([testResult isEqualToString:expectedResultsArray[i]], @"Expected: \"%@\" to become: \"%@\", but result was \"%@\"",
testStringsArray[i], expectedResultsArray[i], testResult);
}
}
pStrTemp = [pStrTemp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

这是为了删除任何空格,当您从任何文本字段获取文本时,但如果您想删除字符串之间的空格,您可以使用

xyz =[xyz.text stringByReplacingOccurrencesOfString:@" " withString:@""];

它将替换没有空格的空格,空字段通过以下方法处理:

searchbar.text=[searchbar.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

我强烈建议把这个放在你的项目中:

extension String {
func trim() -> String {
return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
}


func trim(withSet: NSCharacterSet) -> String {
return self.stringByTrimmingCharactersInSet(withSet)
}
}

这对我来说是最好的方式 SWIFT

        let myString = "  ciao   \n              ciao     "
var finalString = myString as NSString


for character in myString{
if character == " "{


finalString = finalString.stringByReplacingOccurrencesOfString(" ", withString: "")


}else{
finalString = finalString.stringByReplacingOccurrencesOfString("\n", withString: "")


}


}
println(finalString)

结果就是: 再见

但关键是这个!

 extension String {


var NoWhiteSpace : String {


var miaStringa = self as NSString


if miaStringa.containsString(" "){


miaStringa =  miaStringa.stringByReplacingOccurrencesOfString(" ", withString: "")
}
return miaStringa as String


}
}


let myString = "Ciao   Ciao       Ciao".NoWhiteSpace  //CiaoCiaoCiao

如果您正在体验 \u00a0而不是 (空格) ,这可能会对您有所帮助。我有这个问题,当我试图提取设备联系电话号码。我需要修改 phoneNumber 字符串,使其中没有空格。

NSString* yourString = [yourString stringByReplacingOccurrencesOfString:@"\u00a0" withString:@""];

yourString是当前的电话号码时。

- (NSString *)removeWhitespaces {
return [[self componentsSeparatedByCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]]
componentsJoinedByString:@""];
}

使用以下马可和删除的空间。

#define TRIMWHITESPACE(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]

在其他文件中称为 TRIM:

    NSString *strEmail;
strEmail = TRIM(@"     this is the test.");

愿它能帮助你..。