Видаліть пробіл із рядка в 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.