烟台外贸网站建设公司,swift 网站开发,宏基陆通工程建设有限公司网站,广西住房建设部网站因此#xff0c;认为最好谈论我喜欢的另一个Java库。 它已经存在了一段时间#xff0c;也许不是最令人兴奋的库#xff0c;但是它非常有用。 我可能每天都使用它。 org.apache.commons.lang.StringUtils StringUtils是Apache Commons Lang#xff08; http://commons.apac… 因此认为最好谈论我喜欢的另一个Java库。 它已经存在了一段时间也许不是最令人兴奋的库但是它非常有用。 我可能每天都使用它。 org.apache.commons.lang.StringUtils StringUtils是Apache Commons Lang http://commons.apache.org/lang/ 的一部分顾名思义它提供了一些不错的实用程序来处理String这超出了java.lang.String所提供的功能。 它由50多种静态方法组成我不会覆盖其中的每一个方法而只是我最常使用的一些方法。 有两个不同的版本较新的org.apache.commons.lang3.StringUtils和较旧的org.apache.commons.lang.StringUtils 。 两者之间确实没有任何显着差异。 lang3.StringUtils需要Java 5.0可能是您要使用的版本。 公共静态布尔值equalsCharSequence str1CharSequence str2 以为我会从最直接的方法之一开始。 等于 。 这完全符合您的期望它接受两个String如果相同则返回true否则返回false。 但是java.lang.String已经有一个完美的equals方法吗 我到底为什么要使用第三方实现 这是一个公平的问题。 让我们看一些代码您能看到任何问题吗 public void doStuffWithString(String stringParam) {if(stringParam.equals(MyStringValue)) {// do stuff}
} 那是一个NullPointerException等待发生 有两种解决方法 public void safeDoStuffWithString1(String stringParam) {if(stringParam ! null stringParam.equals(MyStringValue)) {// do stuff}
}public void safeDoStuffWithString2(String stringParm) {if(MyStringValue.equals(stringParam)) {// do stuff}
} 我个人不喜欢这两种方法。 我认为null会检查污染代码对我来说“ MyStringValue” .equalsstringParam的扫描效果不佳它看起来是错误的。 这是StringUtils.equals派上用场的地方它是null安全的。 不管您通过什么都不会变成NullPointer 因此您可以按以下方式重写简单方法 public void safeDoStuffWithString3(String stringParam) {if(StringUtils.equals(stringParam,MyStringValue)) {// do stuff}
} 这是个人喜好但我认为这比前两个示例更好。 它们没有什么问题但我确实认为StringUtils.equals值得考虑。 isEmptyisNotEmptyisBlankisNotBlank 好吧这些看起来很容易解释我猜它们都是空安全的吗 您可能在这里发现了一种模式。 isEmpty实际上是java.lang.String.isEmpty的空安全替代品而isNotEmpty是相反的。 因此不再有null检查 if(myString ! null !myString.isEmpty()) { // urghh// Do stuff with myString
}if(StringUtils.isNotEmpty(myString)) { // much nicer// Do stuff with myString
} 那么为什么空白和空 有所不同如果String仅包含空格则isBlank也返回true即… String someWhiteSpace \t \n;
StringUtils.isEmpty(someWhiteSpace); // false
StringUtils.isBlank(someWhiteSpace); // true 公共静态String [] splitString strString spacerChars 对看起来就像String.split所以这只是内置Java方法的null安全版本吗 好吧是的它当然是无效的。 尝试拆分null字符串将导致null并且null分隔符将在空白处拆分。 但是还有另一个原因您应该考虑使用StringUtils.split… 这就是java.lang.String.split使用正则表达式作为分隔符的事实。 例如以下可能无法满足您的要求 public void possiblyNotWhatYouWant() {String contrivedExampleString one.two.three.four;String[] result contrivedExampleString.split(.);System.out.println(result.length); // 0
} 但是我要做的就是在“。”前面加上两个反斜杠。 它将正常工作。 没什么大不了的吗 也许不是但是使用StringUtils.split的最后一个优势是正则表达式很昂贵。 实际上当我测试用逗号分割字符串时根据我的经验 这是相当普遍的用例 StingUtils.split的运行速度快了四倍 公共静态字符串连接可迭代字符串分隔符 啊终于有真正有用的东西了 的确我从来没有找到一种用分隔符将字符串连接起来的优雅方法总有烦人的条件要求检查是否要插入分隔符。 因此很高兴为我提供了一个实用程序。 这是一个简单的示例 String[] numbers {one, two, three};
StringUtils.join(numbers,,); // returns one,two,three 还有各种采用Array和Iterators的重载版本。 好吧我坚信。 这看起来像一个非常有用的库它还能做什么 相当多但是就像我之前说的我不会打扰所有可用的方法最后我会重复API文档中的内容。 我真的建议您仔细看看 http : //commons.apache.org/lang/api-3.1/org/apache/commons/lang3/StringUtils.html 因此基本上如果您需要使用Java核心String库未涵盖的String甚至可能包含的东西做某事请查看StringUtils。 参考来自我们JCG合作伙伴的 Apache Commons Lang StringUtils Tom s编程博客上的 Tom Jefferys。 翻译自: https://www.javacodegeeks.com/2012/02/apache-commons-lang-stringutils.html