Saya telah mencoba menghilangkan ruang putih di NSString
, tetapi tidak ada metode yang saya coba yang berhasil.
Saya memiliki "this is a test"
dan saya ingin mendapatkan "thisisatest"
.
Saya telah menggunakan whitespaceCharacterSet
, yang seharusnya menghilangkan ruang putih.
NSString *search = [searchbar.text stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
tapi saya terus mendapatkan string yang sama dengan spasi. Ada ide?
objective-c
string
cocoa
nsstring
marsalal1014
sumber
sumber
Jawaban:
stringByTrimmingCharactersInSet
hanya menghapus karakter dari awal dan akhir string, bukan yang di tengah.1) Jika Anda hanya perlu menghapus karakter tertentu (katakanlah karakter spasi) dari string Anda, gunakan:
[yourString stringByReplacingOccurrencesOfString:@" " withString:@""]
2) Jika Anda benar-benar perlu menghapus satu set karakter (yaitu tidak hanya karakter spasi, tetapi karakter spasi putih seperti spasi, tab, spasi yang tidak dapat dipecahkan, dll), Anda dapat membagi string Anda menggunakan
whitespaceCharacterSet
kemudian menggabungkan kata-kata lagi dalam satu string :NSArray* words = [yourString componentsSeparatedByCharactersInSet :[NSCharacterSet whitespaceAndNewlineCharacterSet]]; NSString* nospacestring = [words componentsJoinedByString:@""];
Perhatikan bahwa solusi terakhir ini memiliki keuntungan dalam menangani setiap karakter spasi dan tidak hanya spasi, tetapi sedikit kurang efisien daripada file
stringByReplacingOccurrencesOfString:withString:
. Jadi jika Anda benar-benar hanya perlu menghapus karakter spasi dan yakin Anda tidak akan memiliki karakter spasi selain karakter spasi biasa, gunakan metode pertama.sumber
Saya lebih suka menggunakan regex seperti ini:
NSString *myString = @"this is a test"; NSString *myNewString = [myString stringByReplacingOccurrencesOfString:@"\\s" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [myStringlength])]; //myNewString will be @"thisisatest"
Anda dapat menjadikan diri Anda kategori di NSString untuk membuat hidup lebih mudah:
- (NSString *) removeAllWhitespace { return [self stringByReplacingOccurrencesOfString:@"\\s" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [self length])];
}
Berikut adalah metode pengujian unit juga:
- (void) testRemoveAllWhitespace { NSString *testResult = nil; NSArray *testStringsArray = @[@"" ,@" " ,@" basicTest " ,@" another Test \n" ,@"a b c d e f g" ,@"\n\tA\t\t \t \nB \f C \t ,d,\ve F\r\r\r" ,@" landscape, portrait, ,,,up_side-down ;asdf; lkjfasdf0qi4jr0213 ua;;;;af!@@##$$ %^^ & * * ()+ + " ]; NSArray *expectedResultsArray = @[@"" ,@"" ,@"basicTest" ,@"anotherTest" ,@"abcdefg" ,@"ABC,d,eF" ,@"landscape,portrait,,,,up_side-down;asdf;lkjfasdf0qi4jr0213ua;;;;af!@@##$$%^^&**()++" ]; for (int i=0; i < [testStringsArray count]; i++) { testResult = [testStringsArray[i] removeAllWhitespace]; STAssertTrue([testResult isEqualToString:expectedResultsArray[i]], @"Expected: \"%@\" to become: \"%@\", but result was \"%@\"", testStringsArray[i], expectedResultsArray[i], testResult); } }
sumber
Tugas mudah digunakan
stringByReplacingOccurrencesOfString
NSString *search = [searchbar.text stringByReplacingOccurrencesOfString:@" " withString:@""];
sumber
Ini dapat membantu Anda jika Anda mengalaminya
\u00a0
sebagai pengganti(spasi). Saya mengalami masalah ini ketika mencoba mengekstrak Nomor Telepon Kontak Perangkat. Saya perlu memodifikasi string phoneNumber sehingga tidak ada spasi di dalamnya.
NSString* yourString = [yourString stringByReplacingOccurrencesOfString:@"\u00a0" withString:@""];
Kapan
yourString
nomor telepon saat ini.sumber
yourString.replacingOccurrences(of: "\u{00a0}", with: "")
stringByReplacingOccurrencesOfString akan mengganti semua spasi putih dengan dalam string bukan hanya awal dan akhir
Menggunakan
sumber
stringByReplacingOccurrencesOfString
tetapi memberikan contohstringByTrimmingCharactersInSet
?- (NSString *)removeWhitespaces { return [[self componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]] componentsJoinedByString:@""]; }
sumber
Bagi saya ini adalah cara SWIFT terbaik
let myString = " ciao \n ciao " var finalString = myString as NSString for character in myString{ if character == " "{ finalString = finalString.stringByReplacingOccurrencesOfString(" ", withString: "") }else{ finalString = finalString.stringByReplacingOccurrencesOfString("\n", withString: "") } } println(finalString)
dan hasilnya adalah: ciaociao
Tapi triknya adalah ini!
extension String { var NoWhiteSpace : String { var miaStringa = self as NSString if miaStringa.containsString(" "){ miaStringa = miaStringa.stringByReplacingOccurrencesOfString(" ", withString: "") } return miaStringa as String } } let myString = "Ciao Ciao Ciao".NoWhiteSpace //CiaoCiaoCiao
sumber
Itu untuk menghapus spasi apa pun saat Anda mendapatkan teks dari bidang teks apa pun tetapi jika Anda ingin menghapus spasi di antara string, Anda dapat menggunakan
xyz =[xyz.text stringByReplacingOccurrencesOfString:@" " withString:@""];
Ini akan menggantikan ruang kosong tanpa ruang dan bidang kosong diurus dengan metode di bawah ini:
searchbar.text=[searchbar.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
sumber
Gunakan di bawah marco dan hapus ruang.
#define TRIMWHITESPACE(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
di panggilan file lain TRIM:
NSString *strEmail; strEmail = TRIM(@" this is the test.");
Semoga ini akan membantu Anda ...
sumber
pStrTemp = [pStrTemp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
sumber
Saya sangat menyarankan untuk menempatkan ini di suatu tempat dalam proyek Anda:
extension String { func trim() -> String { return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) } func trim(withSet: NSCharacterSet) -> String { return self.stringByTrimmingCharactersInSet(withSet) } }
sumber