Dải không gian hàng đầu và lưu trữ từ chuỗi Java


278

Có một phương pháp thuận tiện để loại bỏ bất kỳ khoảng trắng hàng đầu hoặc dấu nào khỏi Chuỗi Java không?

Cái gì đó như:

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

Kết quả:

no spaces:keep this

myString.replace(" ","") sẽ thay thế không gian giữa giữ và này.


7
Thật không may, nhưng điều đó có nghĩa là câu trả lời ở đây rất hữu ích cho mọi người. Tôi ủng hộ chỉ vì lý do đó.
Alex D

11
Trong khi điều này có thể là một bản sao, đây là một câu hỏi được trình bày tốt hơn. Nếu bất cứ điều gì, cái khác nên được đóng như là một bản sao của cái này.
thecoshman

1
Tôi đã chuyển đổi các bản sao vì Q & A này có nhiều lượt xem và yêu thích hơn, và Q & A khác thực sự là một câu hỏi gỡ lỗi.
Radiodef

1
Đã đưa ra câu trả lời với giải pháp từ API JDK / 11 - String.stripcho vấn đề này.
Naman

Câu trả lời:


601

Bạn có thể thử phương thức trim ().

String newString = oldString.trim();

Hãy xem javadocs


1
Hoạt động như một sự thay thế tương thích ngược cho String.strip () của Java 11. Tôi đã không có thời gian để khám phá sự khác biệt tinh tế.
Josiah Yoder

80

Sử dụng String#trim()phương pháp hoặc String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")để cắt cả hai cuối.

Đối với trang trí bên trái:

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

Đối với trang trí bên phải:

String rightRemoved = myString.replaceAll("\\s+$", "");

3
Điều này có thêm lợi ích là có thể cho biết có bao nhiêu khoảng trống hàng đầu / dấu trong chuỗi.
Błażej Czapp


18

trim () là lựa chọn của bạn, nhưng nếu bạn muốn sử dụng replacephương thức - có thể linh hoạt hơn, bạn có thể thử các cách sau:

String stripppedString = myString.replaceAll("(^ )|( $)", "");

tất cả những gì nó thay thế? Không gian và dòng mới có thể?
Ai đó ở đâu đó

Tôi đã tìm kiếm một giải pháp để chỉ xóa các dấu cách nhưng không dẫn đầu các khoảng trắng. Tôi đã sử dụng: str.replaceAll ("\\ s * $", "") Cảm ơn bạn!
lisa p.

4

Với Java-11 trở lên, bạn có thể sử dụng String.stripAPI để trả về một chuỗi có giá trị là chuỗi này, với tất cả các khoảng trắng hàng đầu và dấu kiểm được loại bỏ. Các javadoc cho cùng đọc:

/**
 * 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()

Các trường hợp mẫu cho những trường hợp này có thể là: -

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"

PS : Di chuyển câu trả lời tại đây dựa trên các nhận xét từ - stackoverflow.com/questions/3796121/iêu
Naman


0

Để cắt char cụ thể, bạn có thể sử dụng:

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

Ở đây sẽ dải không gian hàng đầu và dấu và dấu phẩy .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.