截断字符串的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();