Strip นำและต่อท้าย Spaces จาก Java String


278

มีวิธีความสะดวกสบายในการตัดช่องว่างนำหน้าหรือต่อท้ายจาก Java String หรือไม่?

สิ่งที่ต้องการ:

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

ผลลัพธ์:

no spaces:keep this

myString.replace(" ","") จะแทนที่ช่องว่างระหว่าง Keep และสิ่งนี้


7
มันโชคร้าย แต่ก็หมายความว่าคำตอบที่นี่มีประโยชน์กับผู้คน ฉัน upvoted ด้วยเหตุผลนั้นเท่านั้น
Alex D

11
แม้ว่านี่อาจจะซ้ำกัน แต่นี่เป็นคำถามที่นำเสนอได้ดีกว่า หากมีสิ่งใดอีกสิ่งหนึ่งควรอยู่ใกล้เคียงกับสำเนานี้
thecoshman

1
ฉันสลับรายการที่ซ้ำกันเพราะคำถาม & คำตอบนี้มีจำนวนการดูและรายการโปรดที่มากกว่าและคำถามอื่น ๆ เป็นคำถามที่ดีบั๊ก
Radiodef

1
ทำคำตอบด้วยโซลูชันจาก JDK / 11 API - String.stripถึงสิ่งนี้
Naman

คำตอบ:


601

คุณสามารถลองใช้วิธีการตัด ()

String newString = oldString.trim();

ดูjavadocs


1
ทำงานแทนกันได้ย้อนหลังสำหรับ String.strip () ของ Java 11 ฉันไม่มีเวลาสำรวจความแตกต่างที่ลึกซึ้ง
Josiah Yoder

80

ใช้String#trim()วิธีการหรือString allRemoved = myString.replaceAll("^\\s+|\\s+$", "")ตัดแต่งทั้งท้าย

สำหรับการตกแต่งด้านซ้าย:

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

สำหรับการตกแต่งที่ถูกต้อง:

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

3
สิ่งนี้มีประโยชน์เพิ่มเติมในการบอกจำนวนช่องว่างนำหน้า / ต่อท้ายที่มีในสตริง
Błażej Czapp


18

trim () เป็นตัวเลือกของคุณ แต่หากคุณต้องการใช้replaceวิธีการ - ซึ่งอาจยืดหยุ่นได้มากกว่านี้คุณสามารถลองทำสิ่งต่อไปนี้:

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

มันใช้แทนอะไรได้บ้าง? ช่องว่างและบรรทัดใหม่อาจ?
คนอยู่ที่ไหนสักแห่ง

ฉันค้นหาวิธีแก้ไขเพื่อลบช่องว่างต่อท้าย แต่ไม่นำหน้าช่องว่าง ฉันใช้: str.replaceAll ("\\ s * $", "") ขอบคุณ!
ลิซ่าพี

4

ด้วย Java-11 ขึ้นไปคุณสามารถใช้ประโยชน์จากString.stripAPI เพื่อส่งคืนสตริงที่มีค่าเป็นสตริงนี้โดยลบช่องว่างนำหน้าและต่อท้ายทั้งหมด javadoc สำหรับผู้อ่านคนเดียวกัน:

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

กรณีตัวอย่างสำหรับสิ่งเหล่านี้อาจเป็น: -

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

PS : การย้ายคำตอบที่นี่ตามความคิดเห็นจาก - stackoverflow.com/questions/3796121//
Naman


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.