Saya perlu cara untuk menghapus karakter pertama dari string yang merupakan spasi. Saya mencari metode atau bahkan ekstensi untuk tipe String yang dapat saya gunakan untuk memotong karakter string.
Saya perlu cara untuk menghapus karakter pertama dari string yang merupakan spasi. Saya mencari metode atau bahkan ekstensi untuk tipe String yang dapat saya gunakan untuk memotong karakter string.
Jawaban:
Untuk menghapus spasi putih depan dan belakang:
let trimmedString = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Swift 3 / Swift 4:
let trimmedString = string.trimmingCharacters(in: .whitespaces)
NSCharacterSet.whitespaceAndNewlineCharacterSet()
jika Anda ingin memangkas karakter baris baru juga.
Cara yang benar ketika Anda ingin menghapus semua jenis spasi putih (berdasarkan jawaban SO ini ) adalah:
extension String {
var stringByRemovingWhitespaces: String {
let components = componentsSeparatedByCharactersInSet(.whitespaceCharacterSet())
return components.joinWithSeparator("")
}
}
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
Jawaban ini diposting ketika pertanyaannya adalah tentang menghapus semua spasi putih, pertanyaan diedit untuk hanya menyebutkan spasi putih terkemuka. Jika Anda hanya ingin menghapus spasi putih terkemuka gunakan yang berikut ini:
extension String {
func removingLeadingSpaces() -> String {
guard let index = firstIndex(where: { !CharacterSet(charactersIn: String($0)).isSubset(of: .whitespaces) }) else {
return self
}
return String(self[index...])
}
}
Ekstensi string ini menghapus semua spasi putih dari string, bukan hanya mengekor spasi putih ...
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: "")
}
}
Contoh:
let string = "The quick brown dog jumps over the foxy lady."
let result = string.removeWhitespace() // Thequickbrowndogjumpsoverthefoxylady.
Cepat 3
Anda bisa menggunakan metode ini untuk menghapus semua spasi normal dalam sebuah string (tidak mempertimbangkan semua jenis spasi putih):
let myString = " Hello World ! "
let formattedString = myString.replacingOccurrences(of: " ", with: "")
Hasilnya adalah:
HelloWorld!
Anda juga bisa menggunakan regex.
let trimmedString = myString.stringByReplacingOccurrencesOfString("\\s", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range: nil)
Untuk Swift 3.0+ lihat jawaban lainnya. Ini sekarang jawaban warisan untuk Swift 2.x
Seperti yang dijawab di atas, karena Anda tertarik untuk menghapus karakter pertama, metode instance .stringByTrimmingCharactersInSet () akan bekerja dengan baik:
myString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Anda juga dapat membuat set karakter Anda sendiri untuk memotong batas-batas string Anda dengan, misalnya:
myString.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>"))
Ada juga metode built in instance untuk menangani menghapus atau mengganti substring yang disebut stringByReplacingOccurrencesOfString (target: String, replacement: String) . Ini dapat menghapus spasi atau pola lain yang terjadi di string Anda
Anda dapat menentukan opsi dan rentang, tetapi tidak perlu:
myString.stringByReplacingOccurrencesOfString(" ", withString: "")
Ini adalah cara mudah untuk menghapus atau mengganti pola karakter berulang dalam string Anda, dan dapat dirantai, meskipun setiap kali melewatinya harus melewati lagi seluruh string Anda, mengurangi efisiensi. Jadi Anda bisa melakukan ini:
myString.stringByReplacingOccurrencesOfString(" ", withString: "").stringByReplacingOccurrencesOfString(",", withString: "")
... tapi itu akan memakan waktu dua kali lebih lama.
.stringByReplacingOccurrencesOfString () dokumentasi dari situs Apple
Merangkai metode instance String ini kadang-kadang bisa sangat nyaman untuk konversi satu kali, misalnya jika Anda ingin mengubah gumpalan NSData pendek menjadi string hex tanpa spasi dalam satu baris, Anda dapat melakukan ini dengan interpolasi string bawaan Swift dan beberapa pemangkasan dan mengganti:
("\(myNSDataBlob)").stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "<>")).stringByReplacingOccurrencesOfString(" ", withString: "")
Untuk swift 3.0
import Foundation
var str = " Hear me calling"
extension String {
var stringByRemovingWhitespaces: String {
return components(separatedBy: .whitespaces).joined()
}
}
str.stringByRemovingWhitespaces // Hearmecalling
Saya akan menggunakan ekstensi ini, agar fleksibel dan meniru cara koleksi lain melakukannya:
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"
Jika Anda ingin menghapus spasi dari depan (dan belakang) tetapi tidak di tengah, Anda harus menggunakan stringByTrimmingCharactersInSet
let dirtyString = " First Word "
let cleanString = dirtyString.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
Jika Anda ingin menghapus spasi dari sembarang string, maka Anda mungkin ingin melihat stringByReplacing ...
" First Word "
output "First Word"
).
Swift 4, 4.2 dan 5
Hapus ruang dari depan dan akhir saja
let str = " Akbar Code "
let trimmedString = str.trimmingCharacters(in: .whitespacesAndNewlines)
Hapus spasi dari setiap tempat di string
let stringWithSpaces = " The Akbar khan code "
let stringWithoutSpaces = stringWithSpaces.replacingOccurrences(of: " ", with: "")
Anda dapat mencoba ini juga
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) }))
}
}
Jika ada yang menghapus ruang ekstra dari string misalnya = "This is the demo text remove extra space between the words."
Anda dapat menggunakan Fungsi ini di Swift 4.
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
}
dan hasilnya akan
"This is the demo text remove extra space between the words."
Hai ini mungkin terlambat tetapi patut dicoba. Ini dari file taman bermain. Anda dapat menjadikannya ekstensi String.
Ini ditulis dalam Swift 5.3
Metode 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 "
Metode 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 "
Versi Swift 3
//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)
Namun jawaban lain, kadang-kadang string input dapat berisi lebih dari satu spasi di antara kata-kata. Jika Anda perlu membuat standar untuk hanya memiliki 1 spasi di antara kata-kata, coba ini (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) })
Swift 3 versi jawaban BadmintonCat
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
adalah praktik terbaik.
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)
}
}
Untuk menghapus semua spasi dari string:
let space_removed_string = (yourstring?.components(separatedBy: " ").joined(separator: ""))!