Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在特殊字符的最后一次出现后删除字符串?_Java_Android_String_Stringbuilder - Fatal编程技术网

Java 如何在特殊字符的最后一次出现后删除字符串?

Java 如何在特殊字符的最后一次出现后删除字符串?,java,android,string,stringbuilder,Java,Android,String,Stringbuilder,在我的应用程序中,我尝试使用StringBuilder制作面包屑 假设这是字符串: String1>String2>String3>String4>String5> 现在,我想删除String5>,我想要这样的字符串: String1>String2>String3>String4> 我该怎么做 请帮忙按>拆分字符串,然后在数组上应用循环。按位置匹配字符串。如果匹配,则删除,否则添加到新的stringBuilder。您可以使用regex\

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

假设这是字符串:

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

String1>String2>String3>String4>
我该怎么做


请帮忙

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

您可以使用regex
\\w+>$

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

$
匹配
字符,其中
$
在末尾表示

输出:

String1>String2>String3>String4>
注意:要避免
\uuu
使用

    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>


[^>]+
^
内部
[]
用作否定意味着匹配除
字符以外的所有字符您可以使用lastIndexOf和substring()的组合

例如:

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

我的问题的可能重复是不同的。请仔细阅读@mandar
public StringBuilder delete(int start,int end)
删除此序列子字符串中的字符。子字符串从指定的开始处开始,并扩展到索引末尾-1处的字符,或者如果不存在这样的字符,则扩展到序列的末尾。如果“开始”等于“结束”,则不会进行任何更改。参数:
start-开始索引,包含在内。结束-结束索引,独占。
String oldValue = "String1>String2>String3>String4>String5>";
int lastIndex = oldValue.lastIndexOf('>', oldValue.length() - 2);
String newValue = oldValue.substring(0, lastIndex + 1);