@ Mattdipasquale Trim ist ein sehr gebräuchlicher Name für diese Operation
Austin
Antworten:
831
So entfernen Sie alle Leerzeichen vom Anfang und Ende eines String.
(Beispiel mit Swift 2.0 getestet .)
let myString =" \t\t Let's trim all the whitespace \n \t \n "let trimmedString = myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())//Returns"Let's trim all the whitespace"
(Beispiel mit Swift 3+ getestet .)
let myString =" \t\t Let's trim all the whitespace \n \t \n "let trimmedString = myString.trimmingCharacters(in:.whitespacesAndNewlines)//Returns"Let's trim all the whitespace"
Ist das sicher Wie verhindere ich eine Kollision mit Methodennamen, wenn Apple oder eine Bibliothek eines Drittanbieters dieselbe Methode hinzufügt String?
ma11hew28
12
Erweiterungen sind sicher - und tatsächlich nutzt Apple sie in seinen internen APIs. Sie können keine Namenskollisionen verhindern, und das ist in der Tat gut. Sie erhalten einen Kompilierungsfehler, wenn Apple endlich eine trim () -Methode hinzufügt und Sie wissen, dass Ihre Erweiterung nicht mehr benötigt wird. Erweiterungen sind recht elegant und platzieren Methoden dort, wo Sie sie benötigen, anstatt in einer obskuren Dienstprogrammklasse wie StringUtils. Das Problem besteht darin, dass eine Klasse keine Methode hat, die ich benötige, weil kein anderes Framework importiert wurde, das Erweiterungen hinzugefügt hat.
Absmiths
3
Hey, in Swift 3 sollte zurückkehrenreturn self.trimmingCharacters(in: .whitespacesAndNewlines)
7
let result = "Hello World" .trim () // result = "HelloWorld" Dadurch werden die in der Zeichenfolge enthaltenen Leerzeichen nicht entfernt. entfernt nur führende und nachfolgende Leerzeichen.
Sahil
2
Dadurch werden keine Leerzeichen zwischen den Zeichenfolgen entfernt. Es werden nur führende und nachfolgende Leerzeichen entfernt. Der bessere Weg, um Leerzeichen zwischen Zeichenfolgen zu entfernen, ist die Verwendung Ihres Textes? .ReplacingOccurrences (von: "", mit: "") anstelle von trimmingCharacters
Was ist, wenn ich nur nachgestellte und führende Leerzeichen kürzen möchte?
Suragch
1
Ich bin neu in Swift 3 Erweiterungen. Wenn eine Bibliothek String ändert und ich auch String ändere, können Kollisionen auftreten? Was ist, wenn zukünftige Versionen von swift ad a trim ()? Also ... im Grunde ... sind Erweiterungen so sicher zu verwenden?
Gattster
1
Es ist möglich, Kollisionen zu bekommen.
Alex Brown
let result = "Hello World" .trim () // result = "HelloWorld" Dadurch werden die in der Zeichenfolge enthaltenen Leerzeichen nicht entfernt. wird nur führende und nachfolgende Leerzeichen entfernen
Sahil
45
Swift 5 & 4.2
let trimmedString =" abc ".trimmingCharacters(in:.whitespaces)//trimmedString =="abc"
Es ist eigentlich "whitespacesAndNewlines", haha, man ist noch übrig.
RainCast
9
Ja, das kannst du so machen:
var str =" this is the answer "
str = str.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)
print(srt)//"this is the answer"
CharacterSet ist tatsächlich ein sehr leistungsfähiges Tool zum Erstellen einer Trimmregel mit viel mehr Flexibilität als ein vordefinierter Satz wie .whitespacesAndNewlines.
Zum Beispiel:
var str =" Hello World !"let cs =CharacterSet.init(charactersIn:" !")
str = str.trimmingCharacters(in: cs)
print(str)//"Hello World"
Wenn Sie einen Satz- / Textblock eingegeben haben und nur die angegebene Länge des Textes speichern möchten. Fügen Sie der Klasse die folgende Erweiterung hinzu
var str ="Lorem Ipsum is simply dummy text of the printing and typesetting industry."//str is length 74
print(str)//O/P: Lorem Ipsum is simply dummy text of the printing and typesetting industry.
str = str.trunc(40)
print(str)//O/P:LoremIpsumis simply dummy text of the
extensionString{/// EZSE: Trims white space and new line characters
publicmutatingfunc trim(){self=self.trimmed()}/// EZSE: Trims white space and new line characters, returns a new string
publicfunc trimmed()->String{returnself.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())}}
Ich habe diese Funktion erstellt, die die Eingabe einer Zeichenfolge ermöglicht und eine Liste von Zeichenfolgen zurückgibt, die von einem beliebigen Zeichen abgeschnitten werden
funcTrim(input:String, character:Character)->[String]{var collection:[String]=[String]()var index =0var copy = input
let iterable = input
var trim = input.startIndex.advancedBy(index)for i in iterable.characters
{if(i == character){
trim = input.startIndex.advancedBy(index)// apennding to the list
collection.append(copy.substringToIndex(trim))//cut the input
index +=1
trim = input.startIndex.advancedBy(index)
copy = copy.substringFromIndex(trim)
index =0}else{
index +=1}}
collection.append(copy)return collection
}
da ich keinen Weg gefunden habe, dies in Swift zu tun (kompiliert und funktioniert perfekt in Swift 2.0)
Können Sie anhand eines Beispiels definieren, was Sie unter "Trimmen" verstehen? Da Ihr Rückgabetyp [String] ist, können Sie nicht implementieren, was das OP angefordert hat. (was einen String zurückgibt)
Antworten:
So entfernen Sie alle Leerzeichen vom Anfang und Ende eines
String
.(Beispiel mit Swift 2.0 getestet .)
(Beispiel mit Swift 3+ getestet .)
Hoffe das hilft.
quelle
Fügen Sie diesen Code in eine Datei in Ihrem Projekt ein. So etwas wie Utils.swift:
So können Sie Folgendes tun:
Swift 3.0-Lösung
So können Sie Folgendes tun:
quelle
String
?return self.trimmingCharacters(in: .whitespacesAndNewlines)
In Swift 3.0
Und du kannst anrufen
quelle
Swift 5 & 4.2
quelle
Swift 3
quelle
Ja, das kannst du so machen:
CharacterSet ist tatsächlich ein sehr leistungsfähiges Tool zum Erstellen einer Trimmregel mit viel mehr Flexibilität als ein vordefinierter Satz wie .whitespacesAndNewlines.
Zum Beispiel:
quelle
Zeichenfolge auf bestimmte Länge kürzen
Wenn Sie einen Satz- / Textblock eingegeben haben und nur die angegebene Länge des Textes speichern möchten. Fügen Sie der Klasse die folgende Erweiterung hinzu
Verwenden
quelle
Sie können die trim () -Methode in einer Swift String-Erweiterung verwenden, die ich unter https://bit.ly/JString geschrieben habe .
quelle
Ein anderer ähnlicher Weg:
Verwenden:
quelle
Entnommen aus meinem Repo: https://github.com/goktugyil/EZSwiftExtensions/commit/609fce34a41f98733f97dfd7b4c23b5d16416206
quelle
In Swift3 XCode 8 Final
Beachten Sie, dass das
CharacterSet.whitespaces
keine Funktion mehr ist!(Weder ist
NSCharacterSet.whitespaces
)quelle
// Swift 4.0 Leerzeichen und neue Zeilen entfernen
quelle
Sie können auch Zeichen senden, die gekürzt werden sollen
quelle
Ich habe diese Funktion erstellt, die die Eingabe einer Zeichenfolge ermöglicht und eine Liste von Zeichenfolgen zurückgibt, die von einem beliebigen Zeichen abgeschnitten werden
da ich keinen Weg gefunden habe, dies in Swift zu tun (kompiliert und funktioniert perfekt in Swift 2.0)
quelle
Vergiss nicht
import Foundation
oderUIKit
.Ergebnis:
Andernfalls erhalten Sie:
quelle