У мене є пара струн. Деякі мають пробіли на початку, а деякі ні. Я хочу перевірити, чи рядок починається з пробілу, і якщо так, видаліть його.
Відповіді:
Для цього існує метод у класі NSString. Перевірте stringByTrimmingCharactersInSet:(NSCharacterSet *)set
. Ви повинні використовувати [NSCharacterSet whitespaceCharacterSet]
як параметр:
NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
stringByTrimmingCharactersInSet
видаляє лише символи з початку та кінця рядка, а не символи посередині. Для тих, хто намагається прибрати простір в середині рядка, використовуйте [yourString stringByReplacingOccurrencesOfString:@" " withString:@""]
.
Ви можете використовувати метод stringByTrimmingCharactersInSet NSString з пробіламиAndNewlineCharacterSet NSCharacterSet як такий:
NSString *testString = @" Eek! There are leading and trailing spaces ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
Я написав швидкий макрос, щоб зменшити кількість коду, який потрібно написати.
Крок 1: Відредагуйте файл програми PCH, його слід назвати Project-Name-Prefix.pch
#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
Крок 2: Насолоджуйтесь написанням меншого коду, коли ви хочете обрізати рядок
NSLog(@"Output: %@ %@", TRIM(@"Hello "), TRIM(@"World "));
Output: Hello World
Це видалить лише пробіли, що ведуть.
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