从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) } }
- NSMutableArray – 强制数组只保存特定的对象types
- Foo类同时在MyApp和MyAppTestCase中实现。 将使用两者之一。 哪一个是未定义的
- 检查一个NSString是否只是空格
- UITableView行animation持续时间和完成callback
- 遍历iPhone上的视图层次结构
- NSWindow与NSWindowCollectionBehaviorStation显示在仪表板上。 这是一个错误?
- 用于创buildNSTextField“标签”的示例代码?
- 我在哪里可以find一个关于iPhone / Objective-Cmultithreading的好教程?
- 什么是解决Objective-C命名空间碰撞的最好方法?