Bir boşluk olan bir dizeden ilk karakteri kaldırmak için bir yol gerekir. Bir yöntem veya hatta bir dize karakterini kesmek için kullanabileceğiniz dize türü için bir uzantı arıyorum.
Bir boşluk olan bir dizeden ilk karakteri kaldırmak için bir yol gerekir. Bir yöntem veya hatta bir dize karakterini kesmek için kullanabileceğiniz dize türü için bir uzantı arıyorum.
Yanıtlar:
Ön ve arka boşlukları kaldırmak için:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Hızlı 3 / Hızlı 4:
let trimmedString = string.trimmingCharacters(in: .whitespaces)
NSCharacterSet.whitespaceAndNewlineCharacterSet()
satır karakterlerini de kırpmak istiyorsanız da kullanabilirsiniz .
Her türlü beyaz alanı ( bu SO cevabına dayanarak) kaldırmak istediğinizde doğru yol :
extension String {
var stringByRemovingWhitespaces: String {
let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
return components.joinWithSeparator("")
}
}
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
Bu cevap, tüm boşlukların kaldırılmasıyla ilgili olduğunda, sadece önde gelen boşluklardan bahsetmek üzere düzenlendi. Yalnızca önde gelen boşlukları kaldırmak istiyorsanız aşağıdakileri kullanın:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
Bu String uzantısı, yalnızca boşluktan değil, tüm boşlukları bir dizeden kaldırır ...
extension String {
func replace(string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(string: " ", replacement: "")
}
}
Misal:
let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.
Hızlı 3
Bir dizedeki tüm normal boşlukları kaldırmak için bu yöntemi kullanabilirsiniz (tüm boşluk türlerini dikkate almaz):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
Sonuç:
HelloWorld!
Normal ifade de kullanabilirsiniz.
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
Swift 3.0+ için diğer cevaplara bakın. Bu artık Swift 2.x için eski bir cevap
Yukarıda yanıtlandığı gibi, ilk karakteri kaldırmakla ilgilendiğiniz için .stringByTrimmingCharactersInSet () örneği yöntemi iyi çalışır:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Dizelerinizin sınırlarını şu şekilde kırpmak için kendi karakter setlerinizi de yapabilirsiniz:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
StringByReplacingOccurrencesOfString (target: String, replacement: String) adlı alt dizelerin kaldırılması veya değiştirilmesiyle ilgili yerleşik bir örnek yöntemi de vardır . Dizenizde herhangi bir yerde oluşan boşlukları veya diğer kalıpları kaldırabilir
Seçenekleri ve aralıkları belirtebilirsiniz, ancak şunları yapmanız gerekmez:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
Bu, dizenizdeki yinelenen karakter desenlerini kaldırmanın veya değiştirmenin kolay bir yoludur ve zincirleme yapılabilir, ancak her seferinde tüm dizeden başka bir geçiş yapmak zorunda kalır ve verimliliği azaltır. Böylece bunu yapabilirsiniz:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
... ama iki kat daha uzun sürecek.
Apple sitesinden .stringByReplacingOccurrencesOfString () belgeleri
Bu String örneği yöntemlerini zincirlemek bazen bir kerelik dönüşümler için çok uygun olabilir, örneğin kısa bir NSData blobunu bir satırda boşluk olmadan onaltılık bir dizeye dönüştürmek isterseniz, Swift'in yerleşik String enterpolasyonu ve bazı kırpma ile yapabilirsiniz ve değiştirilmesi:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
İçin Swift 3.0
import Foundation
var str = " Hear me calling"
extension String {
var stringByRemovingWhitespaces: String {
return components(separatedBy: .whitespaces).joined()
}
}
str.stringByRemovingWhitespaces // Hearmecalling
Esnek ve diğer koleksiyonların nasıl yaptığını taklit etmek için bu uzantıyı kullanırdım:
extension String {
func filter(pred: Character -> Bool) -> String {
var res = String()
for c in self.characters {
if pred(c) {
res.append(c)
}
}
return res
}
}
"this is a String".filter { $0 != Character(" ") } // "thisisaString"
Boşlukları önden (ve arkadan) kaldırmak, ancak ortadan kaldırmak istemiyorsanız, stringByTrimmingCharactersInSet
let dirtyString = " First Word "
let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Dizenin herhangi bir yerindeki boşlukları kaldırmak istiyorsanız, stringByReplacing ... öğesine bakmak isteyebilirsiniz.
" First Word "
çıktılar "First Word"
).
Swift 4, 4.2 ve 5
Yalnızca önden ve sondan alanı kaldırın
let str = " Akbar Code "
let trimmedString = str.trimmingCharacters(in: .whitespacesAndNewlines)
Dizenin her yerindeki boşlukları kaldırın
let stringWithSpaces = " The Akbar khan code "
let stringWithoutSpaces = stringWithSpaces.replacingOccurrences(of: " ", with: "")
Bunu da deneyebilirsiniz
let updatedString = searchedText?.stringByReplacingOccurrencesOfString(" ", withString: "-")
extension String {
var removingWhitespaceAndNewLines: String {
return removing(.whitespacesAndNewlines)
}
func removing(_ forbiddenCharacters: CharacterSet) -> String {
return String(unicodeScalars.filter({ !forbiddenCharacters.contains($0) }))
}
}
Herhangi biri dizeden fazladan boşluk kaldırırsa, örneğin = "This is the demo text remove extra space between the words."
Bu işlevi Swift 4'te kullanabilirsiniz.
func removeSpace(_ string: String) -> String{
var str: String = String(string[string.startIndex])
for (index,value) in string.enumerated(){
if index > 0{
let indexBefore = string.index(before: String.Index.init(encodedOffset: index))
if value == " " && string[indexBefore] == " "{
}else{
str.append(value)
}
}
}
return str
}
ve sonuç olacak
"This is the demo text remove extra space between the words."
Merhaba bu geç olabilir ama denemeye değer. Bu bir oyun dosyasýndan. Bir String uzantısı yapabilirsiniz.
Bu Swift 5.3 ile yazılmıştır
Yöntem 1:
var str = "\n \tHello, playground "
if let regexp = try? NSRegularExpression(pattern: "^\\s+", options: NSRegularExpression.Options.caseInsensitive) {
let mstr = NSMutableString(string: str)
regexp.replaceMatches(in: mstr, options: [], range: NSRange(location: 0, length: str.count), withTemplate: "")
str = mstr as String
}
Result: "Hello, playground "
Yöntem 2:
if let c = (str.first { !($0 == " " || $0 == "\t" || $0 == "\n") }) {
if let nonWhiteSpaceIndex = str.firstIndex(of: c) {
str.replaceSubrange(str.startIndex ..< nonWhiteSpaceIndex, with: "")
}
}
Result: "Hello, playground "
Swift 3 sürümü
//This function trim only white space:
func trim() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespaces)
}
//This function trim whitespeaces and new line that you enter:
func trimWhiteSpaceAndNewLine() -> String
{
return self.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
let strFirstName = txtFirstName.text?.trimmingCharacters(in:
CharacterSet.whitespaces)
Yine başka bir cevap, bazen giriş dizesi kelimeler arasında birden fazla boşluk içerebilir. Sözcükler arasında yalnızca 1 boşluk olacak şekilde standartlaştırmanız gerekiyorsa, bunu deneyin (Swift 4/5)
let inputString = " a very strange text ! "
let validInput = inputString.components(separatedBy:.whitespacesAndNewlines).filter { $0.count > 0 }.joined(separator: " ")
print(validInput) // "a very strange text !"
string = string.filter ({!" ".contains($0) })
BadmintonCat'ın cevabının Swift 3 versiyonu
extension String {
func replace(_ string:String, replacement:String) -> String {
return self.replacingOccurrences(of: string, with: replacement, options: NSString.CompareOptions.literal, range: nil)
}
func removeWhitespace() -> String {
return self.replace(" ", replacement: "")
}
}
whitespaceCharacterSet
en iyi uygulamadır.
class SpaceRemover
{
func SpaceRemover(str :String)->String
{
var array = Array(str)
var i = array.count
while(array.last == " ")
{
var array1 = [Character]()
for item in 0...i - 1
{
array1.append(array[item])
}
i = i - 1
array = array1
print(array1)
print(array)
}
var arraySecond = array
var j = arraySecond.count
while(arraySecond.first == " ")
{
var array2 = [Character]()
if j > 1
{
for item in 1..<j
{
array2.append(arraySecond[item])
}
}
j = j - 1
arraySecond = array2
print(array2)
print(arraySecond)
}
print(arraySecond)
return String(arraySecond)
}
}
Dizeden tüm boşlukları kaldırmak için:
let space_removed_string = (yourstring?.components(separatedBy: " ").joined(separator: ""))!