Strip Leading dan Trailing Spaces Dari Java String

278

Apakah ada metode praktis untuk menghapus spasi utama atau spasi tambahan dari Java String?

Sesuatu seperti:

String myString = "  keep this  ";
String stripppedString = myString.strip();
System.out.println("no spaces:" + strippedString);

Hasil:

no spaces:keep this

myString.replace(" ","") akan menggantikan ruang antara tetap dan ini.

Tyler DeWitt
sumber
7
Sangat disayangkan, tetapi itu berarti bahwa jawaban di sini bermanfaat bagi orang-orang. Saya memilih hanya karena alasan itu.
Alex D
11
Sementara ini mungkin merupakan duplikat, ini adalah pertanyaan yang disajikan jauh lebih baik. Jika ada, yang lain harus dekat sebagai duplikat dari yang ini.
thecoshman
1
Saya mengganti duplikat karena Tanya Jawab ini memiliki lebih banyak tampilan dan favorit, dan Tanya Jawab lainnya sebenarnya adalah pertanyaan debugging.
Radiodef
1
Membuat jawaban dengan solusi dari JDK / 11 API - String.stripuntuk ini.
Naman

Jawaban:

601

Anda dapat mencoba metode trim ().

String newString = oldString.trim();

Lihatlah javadocs

woliveirajr
sumber
1
Berfungsi sebagai pengganti kompatibel-belakang untuk String.strip (11) Java. Saya belum punya waktu untuk mengeksplorasi perbedaan halus.
Josiah Yoder
80

Gunakan String#trim()metode atau String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")untuk memangkas kedua ujungnya.

Untuk trim kiri:

String leftRemoved = myString.replaceAll("^\\s+", "");

Untuk trim kanan:

String rightRemoved = myString.replaceAll("\\s+$", "");
Pangeran John Wesley
sumber
3
Ini memiliki manfaat tambahan karena bisa mengetahui berapa banyak ruang terdepan / tertinggal di string.
Błażej Czapp
18

trim () adalah pilihan Anda, tetapi jika Anda ingin menggunakan replacemetode - yang mungkin lebih fleksibel, Anda dapat mencoba yang berikut:

String stripppedString = myString.replaceAll("(^ )|( $)", "");
James.Xu
sumber
apa yang diganti semua? Ruang dan baris baru mungkin?
Seseorang di suatu tempat
Saya sedang mencari solusi untuk hanya menghapus spasi tambahan tetapi tidak memimpin spasi. Saya menggunakan: str.replaceAll ("\\ s * $", "") Terima kasih!
lisa p.
4

Dengan Java-11 dan di atasnya, Anda dapat menggunakan String.stripAPI untuk mengembalikan string yang nilainya string ini, dengan semua spasi putih depan dan belakang dihapus. Javadoc untuk yang sama berbunyi:

/**
 * Returns a string whose value is this string, with all leading
 * and trailing {@link Character#isWhitespace(int) white space}
 * removed.
 * <p>
 * If this {@code String} object represents an empty string,
 * or if all code points in this string are
 * {@link Character#isWhitespace(int) white space}, then an empty string
 * is returned.
 * <p>
 * Otherwise, returns a substring of this string beginning with the first
 * code point that is not a {@link Character#isWhitespace(int) white space}
 * up to and including the last code point that is not a
 * {@link Character#isWhitespace(int) white space}.
 * <p>
 * This method may be used to strip
 * {@link Character#isWhitespace(int) white space} from
 * the beginning and end of a string.
 *
 * @return  a string whose value is this string, with all leading
 *          and trailing white space removed
 *
 * @see Character#isWhitespace(int)
 *
 * @since 11
 */
public String strip()

Contoh kasus untuk ini dapat: -

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"
Naman
sumber
PS : Memigrasikan jawaban di sini berdasarkan komentar dari - stackoverflow.com/questions/3796121/…
Naman
0

Untuk memangkas char tertentu, Anda dapat menggunakan:

String s = s.replaceAll("^(,|\\s)*|(,|\\s)*$", "")

Di sini akan menelanjangi ruang depan dan belakang serta koma .

Gali
sumber