Подтвердить что ты не робот

Удаление нескольких пространств в NSString

У меня есть NSString, у этого есть несколько пробелов, я хочу обрезать эти пробелы и сделать единое пространство, например, @ "как..............." в @ "как вы". (точки просто пробелы)

Я пробовал с

NSString *trimmedString = [user_ids stringByTrimmingCharactersInSet:
                           [NSCharacterSet whitespaceCharacterSet]];

Кажется, что это не работает. Любая идея.

4b9b3361

Ответ 1

Для выполнения этого можно использовать регулярное выражение:

NSError *error = nil;

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"  +" options:NSRegularExpressionCaseInsensitive error:&error];

Шаблон - это пробел, за которым следует одно или несколько вхождений пространства. Замените это одним пространством в строке:

NSString *trimmedString = [regex stringByReplacingMatchesInString:user_ids options:0 range:NSMakeRange(0, [user_ids length]) withTemplate:@" "];

Ответ 2

Это сработало, когда я попробовал:

NSString *trimmedString = @"THIS      IS      A     TEST S    STRING   S D        D F ";
    while ([trimmedString rangeOfString:@"  "].location != NSNotFound) {
        trimmedString = [trimmedString stringByReplacingOccurrencesOfString:@"  " withString:@" "];
    }
NSLog(@"%@", trimmedString);

Ответ 3

user1587011

NSString *trimmedString = [user_ids stringByTrimmingCharactersInSet:
                           [NSCharacterSet whitespaceCharacterSet]];

этот строковый метод, используемый для удаления пробелов в начале и в конце строки.

Попробуйте это, он даст вам то, что вы хотите: -

NSString *theString = @"    Hello      this  is a   long       string!   ";

NSCharacterSet *whitespaces = [NSCharacterSet whitespaceCharacterSet];
NSPredicate *noEmptyStrings = [NSPredicate predicateWithFormat:@"SELF != ''"];

NSArray *parts = [theString componentsSeparatedByCharactersInSet:whitespaces];
NSArray *filteredArray = [parts filteredArrayUsingPredicate:noEmptyStrings];
theString = [filteredArray componentsJoinedByString:@" "];

Ответ 4

Swift 3 код выбранного ответа

let regex = try? NSRegularExpression(pattern: "  +", options: .caseInsensitive)
let trimmedString: String? = regex?.stringByReplacingMatches(in: user_ids, options: [], range: NSRange(location: 0, length: user_ids.characters.count), withTemplate: " ")

Ответ 5

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\s{2,}+" options:NSRegularExpressionCaseInsensitive error:&error];

user_ids = [regex stringByReplacingMatchesInString:user_ids options:0 range:NSMakeRange(0, [s length]) withTemplate:@" "];

Ответ 6

NSString* NSStringWithoutSpace(NSString* string)
{
    return [string stringByReplacingOccurrencesOfString:@" " withString:@""];
}

Ответ 7

вы можете использовать:

NSString *trimmedString = [user_ids stringByReplacingOccurrencesOfString: @" " withString:@""];