2016-01-22 31 views

cevap

30

Swift 4:

let text = "This \n is a st\tri\rng" 
let test = String(text.filter { !" \n\t\r".contains($0) }) 

Çıktı:

print(test) // Thisisastring 
Fahri cevabı sevimli olmasına rağmen ben saf Swift olmayı tercih

;)

+0

Sanırım 'filter' bunun için çok pahalı,' removeSubrange' veya 'stringByTrimmingCharacters' vb. – kakubei

+0

@kakubei: removeSubrange, herhangi bir kaldırma işleminden önce bile, filtrelemede olduğu kadar pahalı olan alt diziler için tüm dizgiyi aramanız gerektiği anlamına gelir. stringByTrimmingCharacters sadece kelimeler arasında ortada değil, bir dizenin başında ve sonunda düzelir. –

0

bunu kullanın:

let aString: String = "This is my string" 
let newString = aString.stringByReplacingOccurrencesOfString(" ", withString: "", options:[], range: nil) 
print(newString) 

Çıktı: Thisismystring

5

Sen NSCharacterSetwhitespaceAndNewlineCharacterSet senin dize kırmaya ve aşağıdaki gibi tekrar geri bitiştirmek için joinWithSeparator() yöntemi kullanmak için kullanabilirsiniz:

let textInput = "Line 1 \n Line 2 \n\r" 
let whitespaceAndNewlineCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet() 
let components = textInput.componentsSeparatedByCharactersInSet(whitespaceAndNewlineCharacterSet) 
let result = components.joinWithSeparator("") //"Line1Line2" 
Daha sonra

let textInput = "Line 1 \n Line 2 \n\r" 
let result = textInput.components(separatedBy: .whitespacesAndNewlines).joined() //"Line1Line2" 

swift3 veya:

extension String { 
    var removingWhitespacesAndNewlines: String { 
     return componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).joinWithSeparator("") 
    } 
} 

düzenleme/güncelleme: kodunuzda herhangi bir yerde kullanmak için

Ayrıca kolaylaştırmak için Dize uzatabilirsiniz


extension String { 
    var removingWhitespacesAndNewlines: String { 
     return components(separatedBy: .whitespacesAndNewlines).joined() 
    } 
} 

let textInput = "Line 1 \n Line 2 \n\r" 
let result = textInput.removingWhitespacesAndNewlines //"Line1Line2" 
1

bu dizeyi sahip olduğunu varsayalım: " Bazı kelimeler \ nanotype \ n \ r \ n \ r \ burada bir şey \ tadı \ rmdjsbclsdcbsdilvb \ n \ rand sonunda nihayet bu :) "

burada Tüm olası boşluğu kaldırma: Bütünlük adına

let text = "This \n is a st\tri\rng" 
let cleanedText = text.filter { !" \n\t\r".characters.contains($0) } 
-1

Swift 4 Bu cevap bana bildirin Swift 4 için

let string = "What is the most efficient way to remove all the spaces and \n \r \tin a String in Swift" 
let stringWithoutWhitespace = string.replacingOccurrences(of: "\\s", with: "", options: .regularExpression) 
// -> "WhatisthemostefficientwaytoremoveallthespacesandinaStringinSwift" 
1

bu Normal İfade sürümü:

let possibleWhiteSpace:NSArray = [" ","\t", "\n\r", "\n","\r"] //here you add other types of white space 
    var string:NSString = "some words \nanother word\n\r here something \tand something like \rmdjsbclsdcbsdilvb \n\rand finally this :)" 
    print(string)// initial string with white space 
    possibleWhiteSpace.enumerateObjectsUsingBlock { (whiteSpace, idx, stop) -> Void in 
     string = string.stringByReplacingOccurrencesOfString(whiteSpace as! String, withString: "") 
    } 
    print(string)//resulting string 

sorunuzun :)

+0

Teşekkürler, bu benim için çalıştı. Ayrıca, \ n, \ r, \ t veya ardışık tüm olayları tek bir boşlukla değiştirmek istedim, bu yüzden "\\ s +" yi kullandım ve "" ile değiştirdim. let string = "bu bir \ n \ t örnek" izin newString = string.replacingOccurrences (of: "\\ s +", with: "", seçenekler: .regularExpression) // Sonuç -> "bu bir örnek " – Chuy47

0

:

let myString = "This \n is a st\tri\rng" 
let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined() 
+0

Zaten mükemmel bir çözüm var. –

+0

filtre çok pahalı ve daha yeni başlayanlar için bence bu daha yararlı olacak ... Bu yüzden neden ekledim –

+0

Tamam, eğer iyi olduğunu düşünüyorsanız. Ama sonra devam et ve çözümünü açıkla lütfen. –

İlgili konular