如果我有一个字符串:
String neatish = getTheString(); // returns "...neat..."
我知道我可以使用以下方法删除第一个省略号:
getTheString().substring(3);
但是我想知道是否有类似的单行方法,基于长度关闭 end ?像:
getTheString().substring(3).truncate(3);
我不想要特定于角色的方法,即。一个只适用于省略号的。
虽然有substring()
接受两个参数,但它需要先将变更String
保存到变量中以确定长度。 (或者,您可以拨打getTheString()
两次。)
我当然可以写一个,但我想知道是否在标准java.lang
包中或在Apache Commons-Lang中有一个单行方法此
我有50%好奇,50%避免重新发明轮子。
更新:为避免混淆,我不想要:
String neatish = getTheString();
neatish = neatish.substring(3)...;
我正在寻找substring()
的后端版本,并想知道为什么没有。{/ p>
答案 0 :(得分:2)
有趣的运动
String theString = new StringBuilder(getTheString()).delete(0, 3).reverse().delete(0, 3).reverse().toString();
将String
放入StringBuilder
,删除前3个字符,将其反转,删除最后3个字符(现在位于开头),然后再将其反转。
答案 1 :(得分:1)
您可以使用subStringBefore and subStringAfter from Commons:
StringUtils.subStringAfter(StringUtils.subStringBefore(getTheString(), "..."), "...");
编辑基于长度:
您需要:StringUtils.html#substring(java.lang.String, int, int)
StringUtils.substring(getTheString(), 3, -3);
答案 2 :(得分:0)
getTheString().substring(3).replaceFirst("(?s)...$", "");
getTheString().replaceFirst("(?s)^...(.*)...$", "$1");
这会删除最后3个字符的正则表达式,其中(?s)
使.
也匹配换行符。使用\\.
匹配句点。难看。
答案 3 :(得分:0)
你可以写一个方法来做。
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(), '.');