正则表达式非常差,所以请耐心等待。
我有字符串LQiW0/QIDAQAB/
和LQiW0/QIDAQAdfB/
。
我正在尝试删除最后一个正斜杠。
尝试str= str.replaceAll("\\/","");
我尝试替换所有但是它替换了所有正斜杠..事情是,我想替换,如果它在最后位置
答案 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);
它也适用于具有最后一个字符/
的个案。