如何在特殊字符倒数第二个出现后删除字符串



在我的应用程序中,我正在尝试使用StringBuilder制作面包屑

假设这是字符串:

String1>String2>String3>String4>String5>

现在我想删除String5>,我想要这样的字符串:

String1>String2>String3>String4>

我该怎么做?

请帮忙!!

您可以使用正则表达式\w+>$

\w+平均匹配[a-zA-Z0-9_]

>$匹配>字符,$最后的意思

正则表达式演示链接

    String s  = "String1>String2>String3>String4>String5>";
    String s2 = s.replaceAll("\w+>$","");
    System.out.println(s2);

输出:

String1>String2>String3>String4>

注意:为避免_使用

    String s2 = s.replaceAll("[a-zA-Z\d]+>$","");

以防万一如果您有带有一些特殊字符的数据,例如

String s = "String1>Stri$#$ng2>String3>Stri#$$#ng4>St$#:/|ring5>";

那么上面的解决方案将不起作用,因此您可以使用

    String s2 = s.replaceAll("[^>]+>$","");
    // s2 will be = String1>Stri$#$ng2>String3>Stri#$$#ng4>

正则表达式演示链接

[^>]+[]内部的^作为否定均值匹配除>字符之外的所有内容

按>分割字符串,然后在数组上应用 for 循环。 按位置匹配字符串。 如果匹配,则删除,否则添加到新的字符串生成器。

您可以使用 lastIndexOf 和 substring(( 的组合。

例:

String oldValue = "String1>String2>String3>String4>String5>";
int lastIndex = oldValue.lastIndexOf('>', oldValue.length() - 2);
String newValue = oldValue.substring(0, lastIndex + 1);

最新更新