2013-07-16 14 views
15

Chciałbym wyciąć ciąg Java, gdy długość tego łańcucha wynosi> 50 i dodać "..." na końcu łańcucha.Wytnij ciąg znaków Java o pewnej liczbie znaków

przykład:

I mają następujące Java ciąg:

String str = "abcdefghijklmnopqrtuvwxyz"; 

Chciałbym cięcia łańcuch na długości 8:

Wynik musi być:

String strOut = "abcdefgh..." 
+1

Zazwyczaj większy sens wyciąć tak, że długość nie będzie więcej niż N z wielokropkiem. Różnica polega na tym, że w tobie 9, 10 lub 11 ciągów znaków zostałoby przyciętych, chociażby były krótsze lub miały taką samą długość. –

Odpowiedz

9

Zastosowanie podciąg

String strOut = "abcdefghijklmnopqrtuvwxyz" 
String result = strOut.substring(0, 8) + "...";// count start in 0 and 8 is excluded 
System.out.pritnln(result); 

Uwaga: podciąg (int pierwszy Int sekundy) ma dwa parametry. Pierwszy jest włączony, a drugi jest wyłączny.

+0

@rgettman to prawda, dziękuję za wejście – fmodos

9

Dżakarta Commons StringUtils.abbreviate(). Jeśli z jakiegoś powodu nie chcesz używać biblioteki innej firmy, skopiuj przynajmniej wersję source code.

Jedną dużą zaletą tego rozwiązania w porównaniu z innymi odpowiedziami do tej pory jest to, że nie wyrzuci, jeśli przekażesz wartość zerową.

2

Coś takiego może być:

String str = "abcdefghijklmnopqrtuvwxyz"; 
if (str.length() > 8) 
    str = str.substring(0, 8) + "..."; 
2
String strOut = str.substring(0, 8) + "..."; 
28

Zastosowanie podciąg i concatenate:

if(str.length() > 50) 
    strOut = str.substring(0,7) + "..."; 
3

Można użyć String#substring()

if(str != null && str.length() > 8) { 
    return str.substring(0, 8) + "..."; 
} else { 
    return str; 
} 

Można jednak uczynić trybie dopuszczającym ty przekazać maksymalną liczbę znaków, które można wyświetlić. Wówczas elipsa byłaby wcięta tylko wtedy, gdyby podana szerokość nie była wystarczająca dla struny.

public String getShortString(String input, int width) { 
    if(str != null && str.length() > width) { 
     return str.substring(0, width - 3) + "..."; 
    } else { 
     return str; 
    } 
} 

// abcdefgh... 
System.out.println(getShortString("abcdefghijklmnopqrstuvwxyz", 11)); 

// abcdefghijk 
System.out.println(getShortString("abcdefghijk", 11)); // no need to trim 
18

StringUtils.abbreviate("abcdefg", 6);

To daje następujący wynik: abc...

gdzie 6 jest potrzebna długość i "abcdefg" to ciąg znaków, który musi być abbrevieted.

+0

jeśli napisałeś "i" abcfudhrenflöerhbfhlredbl "jest ..." mój umysł znacznie szybciej dostanie to, co masz na myśli. : D: D Dzięki i tak :) –

+2

Ta odpowiedź powinna być zaakceptowana, ponieważ jest najdokładniejsza. – Peter

3

Można użyć bezpiecznego podciąg:

org.apache.commons.lang3.StringUtils.substring(str, 0, LENGTH); 
Powiązane problemy