2013-07-16 70 views
15

當字符串長度大於50時,我想剪切一個Java字符串,並在字符串末尾添加「...」。在多個字符處剪切Java字符串

實施例:

我有以下的Java字符串:

String str = "abcdefghijklmnopqrtuvwxyz"; 

我想切割字符串在長度= 8:

結果必須是:

String strOut = "abcdefgh..." 
+1

通常它更有意義的削減,使得其長度將不超過N個以省略號。不同的是,在你的例子中,9,10或11個字符串會被剪切掉,儘管它們會更短或者長度相同。 –

回答

9

使用子串

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

注意:substring(int first,int second)接受兩個參數。第一個是包容性的,第二個是排他性的。

+0

@rgettman這是真的,謝謝輸入 – fmodos

9

Jakarta Commons StringUtils.abbreviate()。如果由於某種原因您不想使用第三方庫,請至少複製source code

與其他答案相比,此優點的一大優點是,如果您傳遞null值,它不會拋出。

2

像這樣的東西可能是:

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

使用串並連接:

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

您可以使用String#substring()

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

但是你可以做一個函數,其中您傳遞可以顯示的最大字符數。只有當指定的寬度對於字符串不夠時,省略號纔會切入。

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);

這會給你以下結果:abc...

其中6所需要的長度,而 「ABCDEFG」 是需要被abbrevieted的字符串。

+0

如果你寫了'和'abcfudhrenflöerhbfhlredbl'是...'我的頭腦會更快地得到你的意思。 :D:D謝謝:) –

+2

這個答案應該被接受,因爲它是最準確的。 – Peter

3

您可以使用安全的字符串:

org.apache.commons.lang3.StringUtils.substring(str, 0, LENGTH);