截断字符串的Java内联方法/策略?

截断字符串的Java内联方法/策略?,java,string,substring,apache-commons,Java,String,Substring,Apache Commons,如果我有一个字符串: String neatish=getTheString();//返回“…整洁…” 我知道我可以使用以下方法消除第一个省略号: getTheString().substring(3) 但我想知道是否有一种类似的单线法,根据长度去掉端点?比如: getTheString().substring(3).截断(3) 我不想要一个特定于字符的方法,即只对椭圆有效的方法 虽然有一个接受两个参数的substring(),但它需要先将字符串保存到一个变量以确定长度。(或者,您可以调用get

如果我有一个字符串:

String neatish=getTheString();//返回“…整洁…”

我知道我可以使用以下方法消除第一个省略号:

getTheString().substring(3)

但我想知道是否有一种类似的单线法,根据长度去掉端点?比如:

getTheString().substring(3).截断(3)

我不想要一个特定于字符的方法,即只对椭圆有效的方法

虽然有一个接受两个参数的
substring()
,但它需要先将
字符串
保存到一个变量以确定长度。(或者,您可以调用
getTheString()
两次。)

我当然可以写一个,但是我想知道在标准的
java.lang
包中,或者在ApacheCommonsLang中,是否有一个单行方法,可以实现这一点

我50%好奇,50%避免重新发明轮子

更新:为避免混淆,我不希望:

String neatish = getTheString();
neatish = neatish.substring(3)...;
我正在寻找
substring()
的后端版本,不知道为什么没有

getTheString().substring(3).replaceFirst("(?s)...$", "");
getTheString().replaceFirst("(?s)^...(.*)...$", "$1");

这将通过正则表达式删除最后3个字符,其中
(?s)
使
也匹配换行符。使用
\\.
匹配句点。难看。

您可以编写一个方法来完成它

public static String trimChar(String s, char ch) {
    int start = 0;
    for(; start < s.length(); start++)
         if (s.charAt(start) != ch)
             break;
    int end = s.length();
    for(; end > start; end--)
         if (s.charAt(end-1) != ch)
             break;
    return s.substring(start, end);
}


String s = trimChar(getTheString(), '.');
公共静态字符串trimChar(字符串s,字符ch){
int start=0;
对于(;开始开始;结束--)
如果(s.charAt(end-1)!=ch)
打破
返回s.substring(开始、结束);
}
字符串s=trimChar(getTheString(),'.');
您可以使用:

根据长度编辑

你需要:

趣味运动

String theString = new StringBuilder(getTheString()).delete(0, 3).reverse().delete(0, 3).reverse().toString();

字符串
放入a中,删除前3个字符,将其反转,删除最后3个字符(现在位于开始位置),再次反转。

长度为
“somestring”。子字符串(3)
通常是
“somestring”。length()-3
我是否缺少了什么,或者您是否只需要
neatish=neatish.replaceAll(\.\.\.\.\”,“”);
?@BrianRoach我不想要特定于省略号的模式,只需要基于长度的通用方法。@CraigOtis是这样的……我可能仍然很密集,但不会是
substring()的两个arg版本
做你想做的事?@BrianRoach如果省略号的位置未知,你建议他的两个arg子字符串的第二个参数是什么?但不要寻找省略号特定的方法-只基于长度的方法。到目前为止,你用负第三个参数更新的答案是最好的。我没有意识到
stringtils
substring()
的版本接受了否定的参数。ApacheCommons拥有一切;)我认为K.C.击败了。:)但这是一个非常有创意的答案。
StringUtils.substring(getTheString(), 3, -3);
String theString = new StringBuilder(getTheString()).delete(0, 3).reverse().delete(0, 3).reverse().toString();