Java Dizesinden Şerit Liderliği ve İzleyen Uzaylar


278

Bir Java String'den önde gelen veya sondaki boşlukları çıkarmak için uygun bir yöntem var mı?

Gibi bir şey:

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

Sonuç:

no spaces:keep this

myString.replace(" ","") keep ve this arasındaki boşluğun yerini alacaktı.


7
Bu talihsiz, ama buradaki cevapların insanlar için yararlı olduğu anlamına geliyor. Ben sadece bu nedenle oy verdim.
Alex D

11
Bu bir kopya olsa da, bu daha iyi sunulan bir sorudur. Bir şey varsa, diğeri bunun bir kopyası olarak yakın olmalıdır.
thecoshman

1
Kopyaları değiştirdim çünkü bu soru-cevap çok daha fazla görüntüleme ve favorilere sahip, diğer soru-cevap aslında bir hata ayıklama sorusu.
Radiodef

1
İle bir cevap Yapılan JDK / 11 API den çözümü - String.stripBuna.
Naman

Yanıtlar:


601

Trim () yöntemini deneyebilirsiniz.

String newString = oldString.trim();

Javadocs'a bir göz atın


1
Java 11's String.strip () için geriye dönük uyumlu bir yedek olarak çalışır. İnce farkları keşfetmek için zamanım olmadı.
Josiah Yoder

80

String#trim()Yöntemi kullanın veyaString allRemoved = myString.replaceAll("^\\s+|\\s+$", "")Her iki ucu kesmek için .

Sol trim için:

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

Doğru düzeltme için:

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

3
Bu, dizede kaç tane önde gelen / sondaki boşluk olduğunu söyleyebilme avantajına sahiptir.
Błażej Czapp


18

trim () sizin seçiminizdir, ancak replacedaha esnek olabilen bir yöntem kullanmak istiyorsanız aşağıdakileri deneyebilirsiniz:

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

neyin yerini alıyor? Uzaylar ve yeni satırlar belki?
Bir Yerde

Sadece arkadaki boşlukları kaldırmak için bir çözüm arıyordum, ancak önde gelen boşlukları değil. Ben kullandım: str.replaceAll ("\\ s * $", "") Teşekkür ederim!
lisa s.

4

Java-11 ve sonraki String.stripsürümlerde, değeri bu dize olan ve tüm önde gelen ve sondaki boşluk kaldırılmış bir dize döndürmek için API'yı kullanabilirsiniz . Aynı şey için javadoc okuyor:

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

Bunlar için örnek durumlar şunlar olabilir: -

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

Not : Cevabı buradan gelen yorumları taşıyarak - stackoverflow.com/questions/3796121/…
Naman


0

Belirli bir karakteri kırpmak için şunları kullanabilirsiniz:

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

Burada önde gelen ve arkadaki boşluk ve virgül olacak .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.