@mattdipasquale trim adalah nama yang sangat umum untuk operasi ini
Austin
Jawaban:
831
Inilah cara Anda menghapus semua spasi putih dari awal dan akhir a String.
(Contoh diuji dengan Swift 2.0 .)
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"
(Contoh diuji dengan Swift 3+ .)
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"
Tidak akan berfungsi pada swif 1.2, karena tidak ada konvensi otomatis dari String ke NSString.
elcuco
5
Ini berfungsi dengan baik di Swift 1.2 - objek String memiliki metode stringByTrimmingCharactersInSet (ini bukan eksklusif NSString)
Ben Dodson
8
Dalam Swift 3.0 adalah: let trimmedString = myString.trimmingCharacters (in: .whitespaces)
kikettas
6
Itu tidak berarti sudah usang. Belum semua orang menggunakan Swift 3.0.
c.dunlap
2
Di Swift 3.0 ini tidak akan menghapus spasi putih di antara string. Itu hanya akan menghapus spasi putih awal dan akhir. Untuk itu lihat jawaban ini: stackoverflow.com/a/39067610/4886069
130
Letakkan kode ini pada file di proyek Anda, sesuatu seperti Utils.swift:
Apakah itu aman? Bagaimana cara mencegah tabrakan nama metode jika Apple atau perpustakaan pihak ketiga menambahkan metode yang sama String?
ma11hew28
12
Ekstensi aman - dan sebenarnya Apple memanfaatkannya secara produktif di API internal mereka. Anda tidak dapat mencegah tabrakan nama, dan ini sebenarnya bagus. Anda akan mendapatkan kesalahan kompilasi ketika Apple akhirnya menambahkan metode trim () dan Anda akan tahu bahwa ekstensi Anda tidak lagi diperlukan. Ekstensi cukup elegan dan meletakkan metode di mana Anda membutuhkannya daripada beberapa kelas utilitas tidak jelas seperti StringUtils - masalah yang saya miliki adalah ketika kelas tidak memiliki metode yang saya butuhkan karena beberapa kerangka kerja lainnya tidak diimpor yang menambahkan ekstensi ke dalamnya.
absmiths
3
Hai, di Swift 3 harus kembalireturn self.trimmingCharacters(in: .whitespacesAndNewlines)
7
biarkan result = "Hello World" .trim () // result = "HelloWorld" ini tidak akan menghapus spasi putih yang terkandung dalam string. akan menghapus hanya ruang depan dan belakang.
Sahil
2
ini tidak akan menghapus spasi di antara string. Ini hanya menghilangkan ruang depan dan belakang. Jadi cara yang lebih baik untuk menghilangkan spasi di antara string adalah menggunakan teks Anda? .MenggantiOccurrences (dari: "", dengan: "") daripada menggunakan pemangkasanKarakter
Bagaimana jika saya hanya ingin memotong trailing dan memimpin spasi putih?
Suragch
1
Saya baru mengenal 3 ekstensi cepat. Jika pustaka memodifikasi String, dan saya juga memodifikasi String, apakah mungkin untuk mendapatkan tabrakan? Bagaimana jika metode swift ad a trim () versi mendatang? Jadi .. pada dasarnya .. apakah ekstensi aman digunakan seperti ini?
Gattster
1
itu mungkin untuk mendapatkan tabrakan.
Alex Brown
biarkan result = "Hello World" .trim () // result = "HelloWorld" ini tidak akan menghapus spasi putih yang terkandung dalam string. hanya akan mengembalikan ruang yang mengarah dan tertinggal
Sahil
45
Swift 5 & 4.2
let trimmedString =" abc ".trimmingCharacters(in:.whitespaces)//trimmedString =="abc"
Ini sebenarnya "whitespacesAndNewlines", haha, tinggal satu.
RainCast
9
Ya sudah, Anda bisa melakukannya seperti ini:
var str =" this is the answer "
str = str.trimmingCharacters(in:CharacterSet.whitespacesAndNewlines)
print(srt)//"this is the answer"
CharacterSet sebenarnya adalah alat yang sangat kuat untuk membuat aturan trim dengan fleksibilitas yang jauh lebih banyak daripada yang ditetapkan sebelumnya seperti .whitespacesAndNewlines miliki.
Sebagai contoh:
var str =" Hello World !"let cs =CharacterSet.init(charactersIn:" !")
str = str.trimmingCharacters(in: cs)
print(str)//"Hello World"
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())}}
Saya membuat fungsi ini yang memungkinkan untuk memasukkan string dan mengembalikan daftar string yang dipangkas oleh karakter apa pun
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
}
karena tidak menemukan cara untuk melakukan ini di swift (mengkompilasi dan bekerja dengan sempurna di swift 2.0)
dapatkah Anda mendefinisikan apa yang Anda maksud dengan 'trim', dengan sebuah contoh. Karena jenis pengembalian Anda adalah [String], Anda tidak dapat mengimplementasikan apa yang diminta OP. (yang mengembalikan sebuah String)
Jawaban:
Inilah cara Anda menghapus semua spasi putih dari awal dan akhir a
String
.(Contoh diuji dengan Swift 2.0 .)
(Contoh diuji dengan Swift 3+ .)
Semoga ini membantu.
sumber
Letakkan kode ini pada file di proyek Anda, sesuatu seperti Utils.swift:
Jadi Anda akan dapat melakukan ini:
Solusi Swift 3.0
Jadi Anda akan dapat melakukan ini:
sumber
String
?return self.trimmingCharacters(in: .whitespacesAndNewlines)
Di Swift 3.0
Dan Anda bisa menelepon
sumber
Swift 5 & 4.2
sumber
Cepat 3
sumber
Ya sudah, Anda bisa melakukannya seperti ini:
CharacterSet sebenarnya adalah alat yang sangat kuat untuk membuat aturan trim dengan fleksibilitas yang jauh lebih banyak daripada yang ditetapkan sebelumnya seperti .whitespacesAndNewlines miliki.
Sebagai contoh:
sumber
Potong String ke Panjang Tertentu
Jika Anda telah memasukkan blok kalimat / teks dan Anda ingin menyimpan hanya panjang tertentu dari teks itu. Tambahkan ekstensi berikut ke Kelas
Menggunakan
sumber
Anda dapat menggunakan metode trim () dalam ekstensi Swift String yang saya tulis https://bit.ly/JString .
sumber
Cara serupa lainnya:
Menggunakan:
sumber
Diambil dari repo saya ini: https://github.com/goktugyil/EZSwiftExtensions/commit/609fce34a41f98733f97dfd7b4c23b5d16416206
sumber
Di Swift3 XCode 8 Final
Perhatikan bahwa
CharacterSet.whitespaces
ini bukan fungsi lagi!(Tidak ada
NSCharacterSet.whitespaces
)sumber
// Swift 4.0 Hapus spasi dan baris baru
sumber
Anda juga dapat mengirim karakter yang ingin Anda potong
sumber
Saya membuat fungsi ini yang memungkinkan untuk memasukkan string dan mengembalikan daftar string yang dipangkas oleh karakter apa pun
karena tidak menemukan cara untuk melakukan ini di swift (mengkompilasi dan bekerja dengan sempurna di swift 2.0)
sumber
Jangan lupa
import Foundation
atauUIKit
.Hasil:
Kalau tidak, Anda akan mendapatkan:
sumber