在我的应用程序中,我尝试使用StringBuilder
制作面包屑假设这是字符串:
while($res_qry = mysql_fetch_array($sel_qry)){
$arr_cnt = sizeof($click_free);
if($arr_cnt != 0){
$m = 0;
foreach ($click_free as $k => $v) {
if ($v['Free_id']==$res_qry['Free_id']) {
S_qty=$v['Qty']+$res_qry['Qty'];
$click_free[$k]['Qty']=$S_qty;
$m=1;
}
}
if($m==0){
$click_free[] = array("Free_id" => $res_qry['Free_id'],"Qty"=>$res_qry['Qty']);
}
}else{
$click_free[] = array("Free_id" => $res_qry['Free_id'],"Qty"=>$res_qry['Qty']);
}
}
现在我要删除String1>String2>String3>String4>String5>
,我想要这样的字符串:
String5>
我该怎么做?
请帮助!!
答案 0 :(得分:3)
您可以使用正则表达式\\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>
[^>]+
:^
[]
作为否定意味着匹配除>
字符之外的所有内容
答案 1 :(得分:0)
按>拆分字符串然后在数组上申请循环。按位置匹配字符串。如果匹配则删除否则添加到新的stringBuilder。
答案 2 :(得分:0)
您可以使用lastIndexOf和substring()的组合。
示例:
String oldValue = "String1>String2>String3>String4>String5>";
int lastIndex = oldValue.lastIndexOf('>', oldValue.length() - 2);
String newValue = oldValue.substring(0, lastIndex + 1);