2015-11-02 7 views
1

У меня проблема с удалением пробелов в начале и в конце строки. Напр. У меня есть строка, как:удаление пробелов в начале и конце строки

\r\n\t- Someone will come here?\n- I don't know for sure...\r\n\r\n

И мне нужно, чтобы удалить пробельные только в конце и начале (строка должна выглядеть следующим образом: - Someone will come here?\n- I don't know for sure... Также может быть много вариантов конец строки: "\ г \ п \ г \ п", "\ г \ п", "\ п \ г \ п" и так далее ...

Благодаря

+0

Возможный дубликат [Имеет ли метод быстрой стирки на String?] (Http://stackoverflow.com/questions/26797739/does-swift-has-trim-method-on-string) – Moritz

ответ

11

Ваша строка содержит не только пробелы, но и символы новой строки.

Использование stringByTrimmingCharactersInSet с whitespaceAndNewlineCharacterSet.

let string = "\r\n\t- Someone will come here?\n- I don't know for sure...\r\n\r\n" 
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 

В Swift 3 это более очищены:

let trimmedString = string.trimmingCharacters(in: .whitespacesAndNewlines) 
+0

ну, этот пример работает с примером, попробуем с другими данными. спасибо –

+0

Спасибо! –

-1

Вы можете сначала удалить из. начало, а затем с конца:

while true { 
if sentence.characters.first == "\r\n" || sentence.characters.first == "\n" { 
    sentence.removeAtIndex(sentence.startIndex) 
} else { 
    break 
} 
} 

while true { 
if sentence.characters.last == "\r\n" || sentence.characters.last == "\n" { 
    sentence.removeAtIndex(sentence.endIndex.predecessor()) 
} else { 
    break 
} 
} 
+1

Держу пари, что это не хорошая идея использовать while-true loop для такой проблемы. Кстати, конец/начало строки может быть другим. Есть много случаев, и писать все это - тоже нехорошо, как я думаю. –

+0

Он вырывается из цикла, когда все пространства удаляются (любая комбинация из \ n и \ r \ n). Всегда будет обрезать белые пробелы (и новые строки) в начале и конце ТОЛЬКО. Вы должны хотя бы попробовать он до того, как его голосует. –

+0

это не мой опрос –

1

Вы можете использовать это расширение и просто называют "yourString" .trim()

extension String 
{ 
    func trim() -> String 
    { 
     return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
    } 
} 
3
//here i have used regular expression and replaced white spaces at the start and end 
     let stringPassing : NSString? = "hdfjkhsdj hfjksdhf sdf " 
     do { 
     print("old->\(stringPassing)") 
     let pattern : String = "(^\\s+)|(\\s+)$" 
     let regex = try NSRegularExpression(pattern: pattern , options: []) 
     let newMatched = regex.matchesInString(stringPassing! as String, options: [], range: NSMakeRange(0,stringPassing!.length)) 
     if(newMatched.count > 0){ 

      let modifiedString = regex.stringByReplacingMatchesInString(stringPassing! as String, options: [] , range: NSMakeRange(0,stringPassing!.length), withTemplate: "") 
       print("new->\(modifiedString)") 
     } 

    } catch let error as NSError { 
     print(error.localizedDescription) 
    } 
2

Строка обрезание первого и последнего пробелов и символов новой строки в Swift 4+

" 2 space ".trimmingCharacters(in: .whitespacesAndNewlines) 

Результат: "2 пространство"

-1

пусть строка = "экзаменационные PLE"

Пусть отделанные = string.replacingOccurrences (из: «(^ \ s +) | (\ S +) $ "с": ", варианты: .regularExpression)

печати (">" + trimmed3 +" < «)

// гравюр> экзаменационные PLE <