Вырезать пробелы с конца NSString

Мне нужно удалить пробелы из конца строки. Как я могу это сделать? Пример: если строка "Hello " она должна стать "Hello"

Использовать -stringByTrimmingCharactersInSet:

 NSString *string = @" this text has spaces before and after "; NSString *trimmedString = [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

(Это позволит обрезать пробельные символы на обоих концах).

Swift 3

 let string = " this text has spaces before and after " let trimmedString = string.trimmingCharacters(in: .whitespacesAndNewlines) 

Другое решение включает создание изменяемой строки:

 //make mutable string NSMutableString *stringToTrim = [@" i needz trim " mutableCopy]; //pass it by reference to CFStringTrimSpace CFStringTrimWhiteSpace((__bridge CFMutableStringRef) stringToTrim); //stringToTrim is now "i needz trim" 

Ну вот…

 - (NSString *)removeEndSpaceFrom:(NSString *)strtoremove{ NSUInteger location = 0; unichar charBuffer[[strtoremove length]]; [strtoremove getCharacters:charBuffer]; int i = 0; for(i = [strtoremove length]; i >0; i--) { NSCharacterSet* charSet = [NSCharacterSet whitespaceCharacterSet]; if(![charSet characterIsMember:charBuffer[i - 1]]) { break; } } return [strtoremove substringWithRange:NSMakeRange(location, i - location)]; } 

Теперь просто позвоните. Предположим, что у вас есть строка с пробелами на передней панели и пробелами на конце, и вы просто хотите удалить пробелы в конце, вы можете вызвать ее так:

 NSString *oneTwoThree = @" TestString "; NSString *resultString; resultString = [self removeEndSpaceFrom:oneTwoThree]; 

resultString будет иметь пробелов в конце.

Чтобы удалить пробелы только с начала и конца строки в Swift:

Swift 3

 string.trimmingCharacters(in: .whitespacesAndNewlines) 

Предыдущие быстрые версии

 string.stringByTrimmingCharactersInSet(.whitespaceAndNewlineCharacterSet())) 

Быстрая версия

Только выравнивает пробелы в конце строки:

 private func removingSpacesAtTheEndOfAString(var str: String) -> String { var i: Int = countElements(str) - 1, j: Int = i while(i >= 0 && str[advance(str.startIndex, i)] == " ") { --i } return str.substringWithRange(Range(start: str.startIndex, end: advance(str.endIndex, -(j - i)))) } 

Прореживает пробелы по обе стороны строки:

 var str: String = " Yolo " var trimmedStr: String = str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) 

Это приведет к удалению только конечных символов по вашему выбору.

 func trimRight(theString: String, charSet: NSCharacterSet) -> String { var newString = theString while String(newString.characters.last).rangeOfCharacterFromSet(charSet) != nil { newString = String(newString.characters.dropLast()) } return newString } 
 NSString *trimmedString = [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; //for remove whitespace and new line character NSString *trimmedString = [string stringByTrimmingCharactersInSet: [NSCharacterSet punctuationCharacterSet]]; //for remove characters in punctuation category 

Есть много других наборов символов. Проверьте это самостоятельно согласно вашему требованию.

В Swift

Чтобы обрезать пробел и новую строку с обеих сторон строки:

 var url: String = "\n http://example.com/xyz.mp4 " var trimmedUrl: String = url.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 

Простое решение только обрезать один конец вместо обоих концов в объективе c:

 @implementation NSString (category) /// trims the characters at the end - (NSString *)stringByTrimmingSuffixCharactersInSet:(NSCharacterSet *)characterSet { NSUInteger i = self.length; while (i > 0 && [characterSet characterIsMember:[self characterAtIndex:i - 1]]) { i--; } return [self substringToIndex:i]; } @end 

И симметричная утилита для обрезки только начала:

 @implementation NSString (category) /// trims the characters at the beginning - (NSString *)stringByTrimmingPrefixCharactersInSet:(NSCharacterSet *)characterSet { NSUInteger i = 0; while (i < self.length && [characterSet characterIsMember:[self characterAtIndex:i]]) { i++; } return [self substringFromIndex:i]; } @end 

Я придумал эту функцию, которая в основном ведет себя так же, как в ответе Алекса:

 -(NSString*)trimLastSpace:(NSString*)str{ int i = str.length - 1; for (; i >= 0 && [str characterAtIndex:i] == ' '; i--); return [str substringToIndex:i + 1]; } 

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

Решение описано здесь: Как удалить пробелы с правого конца NSString?

Добавьте в NSString следующие категории:

 - (NSString *)stringByTrimmingTrailingCharactersInSet:(NSCharacterSet *)characterSet { NSRange rangeOfLastWantedCharacter = [self rangeOfCharacterFromSet:[characterSet invertedSet] options:NSBackwardsSearch]; if (rangeOfLastWantedCharacter.location == NSNotFound) { return @""; } return [self substringToIndex:rangeOfLastWantedCharacter.location+1]; // non-inclusive } - (NSString *)stringByTrimmingTrailingWhitespaceAndNewlineCharacters { return [self stringByTrimmingTrailingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; } 

И вы используете его как таковое:

 [yourNSString stringByTrimmingTrailingWhitespaceAndNewlineCharacters] 

Чтобы обрезать все символы пробельного символа пробела (я предполагаю, что это на самом деле ваше намерение), следующий довольно простой и сжатый способ сделать это:

 NSString *trimmedString = [string stringByReplacingOccurrencesOfString:@"\\s+$" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, string.length)]; 

Одна строка с тире регулярного выражения.

let string = “Test Trimmed String”

Для удаления пробела и новой строки используйте код ниже:

let str_trimmed = yourString.trimmingCharacters (в: .whitespacesAndNewlines)

Для удаления только пробелов из строки используйте код ниже:

let str_trimmed = yourString.trimmingCharacters (в: .whitespaces)

 NSString* NSStringWithoutSpace(NSString* string) { return [string stringByReplacingOccurrencesOfString:@" " withString:@""]; } 
  • Более эффективный способ обработки функций $ (window) .scroll в jquery?
  • Как остановить прокрутку в виджетах галереи?
  • Трюки для улучшения производительности прокрутки iPhone UITableView?
  • Различать прокрутку вверх / вниз в jquery?
  • Плавный скроллер на основе положения мыши (JQuery)
  • Могу ли я изменить скорость прокрутки с помощью css или jQuery?
  • Как автоматически перейти к нижней части многострочного текстового поля?
  • Android WebView внутри ScrollView прокручивает только scrollview
  • angular2 прокрутите вниз (стиль чата)
  • Как прокрутить страницу до определенного места на странице с помощью jquery?
  • как можно включить полосы прокрутки в WPF Datagrid?
  • Interesting Posts

    Как использовать API Google в трепете?

    В чем основное отличие между наследованием и polymorphismом?

    Могу ли я использовать Notepad ++ для selectivelly для объединения двух текстовых файлов?

    Получение ошибки «net :: ERR_BLOCKED_BY_CLIENT» при некоторых вызовах AJAX

    Как получить подробную информацию о контакте в Android

    Что означает «время доступа O (1)»?

    Заполнение массива в пакетном сценарии DOS

    Что такое хорошее размещенное ПО для часто задаваемых вопросов

    VLOOKUP с несколькими критериями, возвращающими значения в одной ячейке

    didFailToReceiveAdWithError не работает для симуляторов iOS 8

    Макет в памяти структуры. структура массивов и массив структур в C / C ++

    Получить путь к исполняемому каталогу приложения Windows Forms

    MS Word для PDF. Границы поврежденных таблиц

    Расширение формулы ячейки, разрешающей все ее ссылки (прецеденты)

    Как использовать интернет-соединение? (Одноранговая сеть)

    Давайте будем гением компьютера.