\n
ve \r
tüm boşlukları Swift'de bir dizgede kaldırmak için en etkili yol nedir?Tüm boşluklar nasıl kaldırılır ve n r bir String içinde?
for character in string.characters {
}
Ama biraz rahatsız edici bulunuyor:
denedim.
\n
ve \r
tüm boşlukları Swift'de bir dizgede kaldırmak için en etkili yol nedir?Tüm boşluklar nasıl kaldırılır ve n r bir String içinde?
for character in string.characters {
}
Ama biraz rahatsız edici bulunuyor:
denedim.
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
;)
bunu kullanın:
let aString: String = "This is my string"
let newString = aString.stringByReplacingOccurrencesOfString(" ", withString: "", options:[], range: nil)
print(newString)
Çıktı: Thisismystring
Sen NSCharacterSet
whitespaceAndNewlineCharacterSet
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"
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) }
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"
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 :)
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
:
let myString = "This \n is a st\tri\rng"
let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined()
Zaten mükemmel bir çözüm var. –
filtre çok pahalı ve daha yeni başlayanlar için bence bu daha yararlı olacak ... Bu yüzden neden ekledim –
Tamam, eğer iyi olduğunu düşünüyorsanız. Ama sonra devam et ve çözümünü açıkla lütfen. –
Sanırım 'filter' bunun için çok pahalı,' removeSubrange' veya 'stringByTrimmingCharacters' vb. – kakubei
@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. –