我需要替换较大字符串中的动态子字符串,但仅替换一次(即第一次匹配)。 String类只提供replace()
,它替换子字符串的所有实例;有一个replaceFirst()
方法,但它只需要正则表达式而不是常规字符串。我对使用正则表达式有两个顾虑:
1)我的子字符串是动态的,因此可能包含在正则表达式中表示其他含义的奇怪字符,并且我不想处理字符转义。
2)这种替换经常发生,我不确定使用正则表达式是否会影响性能。我无法预先编译正则表达式,因为正则表达式本身是动态的!
我一定在这里遗漏了一些东西,因为这在我看来是一个非常基本的事情......是否有一个replaceFirst方法在java框架的其他地方获取常规字符串?
您应该使用已经测试过且记录良好的库来支持编写自己的代码!
StringUtils.replaceOnce("aba", "a", "") = "ba"
The StringUtils
班级来自Apache Commons Lang3 https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html打包并可以像这样导入到 Maven 中:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)