Видаліть пробіл із рядка в Objective-C


79

У мене є пара струн. Деякі мають пробіли на початку, а деякі ні. Я хочу перевірити, чи рядок починається з пробілу, і якщо так, видаліть його.


Трохи пошуків не завадило б. Подивіться на Який найкращий спосіб обрізати пробіли зі струни в Cocoa Touch?
Abizern

Відповіді:


219

Для цього існує метод у класі NSString. Перевірте stringByTrimmingCharactersInSet:(NSCharacterSet *)set. Ви повинні використовувати [NSCharacterSet whitespaceCharacterSet]як параметр:

NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

4
Це також дозволить обрізати кінцеві пробіли (що може бути або не бути бажаним. (Оригінальне питання просить просто видалити його з самого початку).
lnafziger

2
stringByTrimmingCharactersInSetвидаляє лише символи з початку та кінця рядка, а не символи посередині. Для тих, хто намагається прибрати простір в середині рядка, використовуйте [yourString stringByReplacingOccurrencesOfString:@" " withString:@""].
Арнаб,

76

Ви можете використовувати метод stringByTrimmingCharactersInSet NSString з пробіламиAndNewlineCharacterSet NSCharacterSet як такий:

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];

4
+1 за рекомендацію whitespaceAndNewlineCharacterSet, а не просто whitespaceCharacterSet.
Рік Сміт-Унна

1
-1 до Apple за перевизначення пробілів, щоб не включати нові рядки (натомість вони мали створити новий inlineWhitespaceCharacterSet)
AlexChaffee

Це також дозволить обрізати кінцеві пробіли (що може бути або не бути бажаним. (Оригінальне питання просить просто видалити його з самого початку).
lnafziger

7

Я написав швидкий макрос, щоб зменшити кількість коду, який потрібно написати.

Крок 1: Відредагуйте файл програми PCH, його слід назвати Project-Name-Prefix.pch

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

Крок 2: Насолоджуйтесь написанням меншого коду, коли ви хочете обрізати рядок

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

Output: Hello World

6

Це видалить лише пробіли, що ведуть.

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

вихід

mystring    123   , length 9
mystring 123   , length 6
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.