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