String最后替换所有特殊字符

时间:2013-07-12 14:44:39

标签: java regex string

正则表达式非常差,所以请耐心等待。

我有字符串LQiW0/QIDAQAB/LQiW0/QIDAQAdfB/

我正在尝试删除最后一个正斜杠。

尝试str= str.replaceAll("\\/","");

我尝试替换所有但是它替换了所有正斜杠..事情是,我想替换,如果它在最后位置

5 个答案:

答案 0 :(得分:12)

请尝试以下代码:

str = str.replaceAll("\\/$", "");

$表示行尾(在本例中为字符串结尾)。

答案 1 :(得分:5)

你真的需要正则表达式吗?一个简单的substring将完成这项工作:

str = str.substring(0, str.lastIndexOf("/"));

但是,如果你想只在字符串的结尾处替换正斜杠,那么replaceAll就会很好。

但您也可以使用此功能(与replaceAll相比,这可能不会更具可读性):

str = str.endsWith("/") ? str.substring(0, str.length() - 1) : str;

答案 2 :(得分:3)

最好不要在这些简单的操作中使用正则表达式替换。即使不需要,人们也总是使用正则表达式。此外,正则表达式可以非常直接,但是当你需要覆盖一些侧面案例时,它会变得非常快。见https://softwareengineering.stackexchange.com/questions/113237/when-you-should-not-use-regular-expressions

在你的情况下,这是一个很好的工具。

您可以使用org.apache.commons.lang.StringUtils

StringUtils.stripEnd("LQiW0/QIDAQAdfB/", "/")   = "LQiW0/QIDAQAdfB"
StringUtils.stripEnd("LQiW0/QIDAQAdfB///", "/")   = "LQiW0/QIDAQAdfB"

StringUtils.stripStart("///LQiW0/QIDAQAdfB/", "/")   = "LQiW0/QIDAQAdfB/"
StringUtils.stripStart("///LQiW0/QIDAQAdfB///", "/")   = "LQiW0/QIDAQAdfB///"

答案 3 :(得分:0)

str = str.replaceAll(@"\/(?=\n)", "");

这应该与正斜杠相匹配,后面跟一个新行。

答案 4 :(得分:0)

如果您要使用LQiW0/QIDAQAB/Sdf4s之类的字符串,并且想删除最后/以获取LQiW0/QIDAQABSdf4s,那么这将有效。

str = str.substring(0,str.lastIndexOf('/'))+str.substring(str.lastIndexOf('/')+1);

它也适用于具有最后一个字符/的个案。