每当我遇到这个问题时,我都会问自己同样的问题:是不是有一种更简单,更不讨厌的方式从X字符末尾剪切字符串。
假设我得到"Helly there bla bla"
并且 - 为什么 - 我需要切断最后2个字符,结果为"Helly there bla b"
。
我现在会做以下事情:
String result = text.substring(0, text.length() - 2);
我宁愿做类似的事情:
String result = text.cutOffEnd(2);
我知道那里有很多String库,但不知道很多,我从来没有见过这样的东西所以我希望你们中的某些人可能会更清楚:)
修改
问:为什么不构建自己的util方法/类?
答:我不想使用自己的util方法。我没有为“null或empty”或其他琐碎的东西编写一个util方法。我认为必须有可用的东西,因为我会说很多人在他们的一生中经常需要这种功能。 另外:我在许多不同的项目中工作,只想依靠像“Strings.nullToEmpty(str)”等简单的库调用。我只是不自己构建类似的东西,尽管它很简单。
问:为什么text.substring(0, text.length() - 2);
不够好?
A:如果将它与我想要的功能进行比较,那就非常笨重了。另外,想一想:如果确定字符串,它就变得更加简单:
String result = otherClass.getComplicatedCalculatedText(par1, par2).substring(0,
otherClass.getComplicatedCalculatedText(par1, par2).length() - 2);
显然我需要使用一个局部变量,在这一点上是不必要的......因为它可能只是:
String result = otherClass.getComplicatedCalculatedText(par1, par2).cutOffEnd(2);
答案 0 :(得分:4)
通过使用一些字符串库。我建议Apache的公共语言。
对于你的情况来说这已经足够了。
import org.apache.commons.lang.StringUtils;
String result = StringUtils.removeEnd( "Helly there bla bla", "la");
答案 1 :(得分:1)
完成以下代码
public class OddNumberLoop {
public static void main(String[] args) {
String st1 = "Helly there bla bla";
String st2 = st1.substring(0, st1.length() - 2);
System.out.println(st2);
}
}
祝你好运!!!
答案 2 :(得分:0)
在starnard库中没有内置的实用程序,但是为此自己编写一个util方法有多难?
public static String cutOffEnd(String s, int n) {
return s == null || s.length() <= n ? "" : s.substring(0, s.length() - n);
}
包含检查的完整解决方案包括:
public static String cutOffEnd(String s, int n) {
if (s == null)
throw new NullPointerException("s cannot be null!");
if (n > s.length())
throw new IllegalArgumentException("n cannot be greater"
+ " than the length of string!");
return s.substring(0, s.length() - n);
}
答案 3 :(得分:0)
一个现实的例子:
String url = "http://www.foo.bar/#abc";
String site = url.substring(0, url.indexOf("#"));
// this shall be extracted into a utils-method
// anyway like `MyURLParser.cutOfAnchor()`.
禁止在这里要求具体的图书馆。