Remove whitespace from string in Objective-C
Asked Answered
P

4

84

I have a couple of strings. Some have a whitespace in the beginning and some not. I want to check if a string begins with a whitespace and if so remove it.

Parolee answered 10/1, 2011 at 10:17 Comment(1)
A little searching wouldn't hurt. Have a look at What's the best way to trim whitespace from a string in Cocoa Touch?Lukin
S
233

There is method for that in NSString class. Check stringByTrimmingCharactersInSet:(NSCharacterSet *)set. You should use [NSCharacterSet whitespaceCharacterSet] as parameter:

NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
Slightly answered 10/1, 2011 at 10:21 Comment(2)
This will also trim trailing whitespace (which may or may not be desirable. (The original question asks to just remove it from the beginning).Sonorant
stringByTrimmingCharactersInSet only removes characters from the beginning and the end of the string, not the ones in the middle. For those who are trying to remove space in the middle of a string, use [yourString stringByReplacingOccurrencesOfString:@" " withString:@""].Inborn
B
79

You could use the stringByTrimmingCharactersInSet NSString method with the whitespaceAndNewlineCharacterSet NSCharacterSet as such:

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];
Beechnut answered 10/1, 2011 at 10:21 Comment(3)
+1 for recommending the whitespaceAndNewlineCharacterSet rather than just the whitespaceCharacterSet.Dewan
-1 to Apple for redefining whitespace to not include newlines (they should have made a new inlineWhitespaceCharacterSet instead)Imposing
This will also trim trailing whitespace (which may or may not be desirable. (The original question asks to just remove it from the beginning).Sonorant
I
8

This will remove only the leading white space.

NSString *myString = @"   123   ";
NSLog(@"mystring %@, length %d",myString, myString.length);
NSRange range = [myString rangeOfString:@"^\\s*" options:NSRegularExpressionSearch];
myString = [myString stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"mystring %@, length %d",myString, myString.length);

output

mystring    123   , length 9
mystring 123   , length 6
Isiah answered 19/7, 2013 at 7:9 Comment(1)
Ryan, thanks for answering the original question!!!Malang
E
8

I wrote a quick macro to reduce the amount of code needed to be written.

Step 1: Edit your app's PCH file, this should be named Project-Name-Prefix.pch

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

Step 2: Enjoy writing way less code when you want to trim a string

NSLog(@"Output: %@ %@", TRIM(@"Hello        "), TRIM(@"World      "));

Output: Hello World
Entrenchment answered 4/5, 2014 at 3:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.