Perhatikan contoh berikut:
" Hello this is a long string! "
Saya ingin mengubahnya menjadi:
"Hello this is a long string!"
objective-c
ios
nsstring
hfossli.dll
sumber
sumber
Regex dan NSCharacterSet siap membantu Anda. Solusi ini memangkas spasi putih di depan dan di belakang serta beberapa spasi putih.
Penebangan
final
memberiPola regex alternatif yang mungkin:
[ ]+
[ \\t]+
\\s+
Daftar kinerja
Kemudahan ekstensi, kinerja, jumlah baris kode dan jumlah objek yang dibuat membuat solusi ini sesuai.
sumber
stringByReplacingOccurrencesOfString:
. Tidak percaya saya tidak tahu itu.Sebenarnya, ada solusi yang sangat sederhana untuk itu:
( Sumber )
sumber
Dengan regex, tetapi tanpa memerlukan kerangka kerja eksternal:
sumber
NSRegularExpressionSearch
mengatakan bahwa itu hanya bekerja denganrangeOfString:...
metodeSolusi satu baris:
sumber
Ini harus melakukannya ...
sumber
Opsi lain untuk regex adalah RegexKitLite , yang sangat mudah disematkan dalam proyek iPhone:
sumber
Coba ini
sumber
Berikut adalah potongan dari
NSString
ekstensi, di mana"self"
adalahNSString
contoh. Ini dapat digunakan untuk menciutkan whitespace yang bersebelahan menjadi satu spasi dengan meneruskan[NSCharacterSet whitespaceAndNewlineCharacterSet]
dan' '
ke dua argumen.sumber
Solusi alternatif: dapatkan salinan OgreKit (pustaka ekspresi reguler Cocoa).
Seluruh fungsinya kemudian:
Pendek dan manis.
Jika Anda mencari solusi tercepat, serangkaian instruksi yang dibuat dengan hati-hati menggunakan
NSScanner
mungkin akan bekerja paling baik tetapi itu hanya diperlukan jika Anda berencana untuk memproses blok teks yang besar (banyak megabyte).sumber
menurut @Mathieu Godart adalah jawaban terbaik, tetapi beberapa baris hilang, semua jawaban hanya mengurangi spasi antar kata, tetapi ketika jika memiliki tab atau memiliki tab di ruang tempat, seperti ini: "ini adalah teks \ t, dan \ tTab di antara, seterusnya "dalam kode tiga baris kita akan: string yang ingin kita kurangi spasi putih
hasilnya adalah
tanpa mengganti tab, hasilnya akan menjadi:
sumber
Anda juga dapat menggunakan argumen while yang sederhana. Tidak ada keajaiban RegEx di sana, jadi mungkin lebih mudah untuk memahami dan mengubahnya di masa mendatang:
sumber
Mengikuti dua ekspresi reguler akan berfungsi tergantung pada persyaratan
Kemudian terapkan metode instance nsstring
stringByReplacingOccurrencesOfString:withString:options:range:
untuk menggantinya dengan satu spasi.misalnya
Catatan: Saya tidak menggunakan pustaka 'RegexKitLite' untuk fungsionalitas di atas untuk iOS 5.x dan di atasnya.
sumber