2013-07-16 40 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);