如何在第二次出现特殊字符后删除字符串?

时间:2017-02-11 06:09:19

标签: java android string stringbuilder

在我的应用程序中,我尝试使用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>

我该怎么做?

请帮助!!

3 个答案:

答案 0 :(得分:3)

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

\\w+表示匹配[a-zA-Z0-9_]

>$匹配>最后$表示的字符

Regex Demo Link

    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>

Regex Demo Link

[^>]+^ []作为否定意味着匹配除>字符之外的所有内容

答案 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);