从NSString中删除所有的空格

我一直试图摆脱NSString中的空白,但没有任何我尝试过的方法工作。

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

我使用了whitespaceCharacterSet ,它应该消除空白。

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

但我一直得到相同的string与空格。 有任何想法吗?

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

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

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

2)如果你真的需要删除一组字符(即不仅是空格字符,而是任何空格字符,如空格,制表符,牢不可破的空间等),你可以使用whitespaceCharacterSet分割你的string,然后再join单词串:

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

请注意,最后一个解决scheme的优点是处理每个空格字符,而不仅仅是空格,但效率低于stringByReplacingOccurrencesOfString:withString: 所以,如果你真的只需要删除空格字符,并确保你不会有任何其他的空格字符比纯空格字符,使用第一种方法。

我更喜欢使用这样的正则expression式:

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

}

这里也是一个unit testing的方法:

 - (void) testRemoveAllWhitespace { NSString *testResult = nil; NSArray *testStringsArray = @[@"" ,@" " ,@" basicTest " ,@" another Test \n" ,@"abcdefg" ,@"\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); } } 

简单的任务使用stringByReplacingOccurrencesOfString

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

这可以帮助你,如果你正在经历,而不是 (空格)。 当我试图提取设备联系人电话号码时,我遇到了这个问题。 我需要修改phoneNumberstring,所以它没有空格。

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

yourString是当前的电话号码。

stringByReplacingOccurrencesOfString将会replacestring中的所有空格,而不仅仅是开始和结束

使用

 [YourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] 

这是为了消除从任何文本字段中获取文本时的任何空间,但是如果要删除string之间的空间,您可以使用

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

它将取代没有空间的空白空间,通过以下方法来处理空白字段:

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

这对我来说是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) 

结果是:ciaociao

但诀窍是这个!

  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 

使用下面的马科,并删除空间。

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

在其他文件中调用TRIM:

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

愿它能帮助你…

 pStrTemp = [pStrTemp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

我强烈build议把它放在你的项目的某个地方:

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