如何删除String中特定位置的数值

时间:2015-10-07 04:58:08

标签: java regex

我想从特定的位置位置删除数值。我使用了正则表达式,但它删除了字符串中的每个数字值。

我有这些字符串:

Draft1(admin)
Draft2(adminn)
Draft21(admin23)
Draft112(admin211)

我希望这些字符串为:

Draft(admin)
Draft(adminn)
Draft(admin23)
Draft(admin211)

目前我使用了正则表达式:

name = name.replaceAll("\\d", "");

取代所有数值,我得到类似的东西:

Draft(admin)

4 个答案:

答案 0 :(得分:1)

您只需将String#replaceFirst(?i)(?<=Draft)\d+这样的正则表达式一起使用即可删除此数字:

name = name.replaceFirst("(?i)(?<=Draft)\\d+","");

其中:

(?i)使正则表达式不区分大小写,因此草案甚至可以草拟或草稿

(?<=Draft)Draft字的后瞻,它断言字符串中当前位置前面的内容是Draft

\\d+是一个或多个要替换的数字

答案 1 :(得分:0)

(?<=Draft)\\d+\\b

您可以使用此empty string替换。lookbehind将确保它仅替换Draft之后的数字。

答案 2 :(得分:0)

你可以试试这个

class String111
{
public static void main(String args[])
{
String s1="Draft1(admin)";
String s2="Draft21(admin23)";

System.out.println(s1.substring(0,s1.indexOf('(')).replaceAll("\\d", "")+s1.substring(s1.indexOf('('),s1.length()));

System.out.println(s2.substring(0,s2.indexOf('(')).replaceAll("\\d", "")+s2.substring(s2.indexOf('('),s2.length()));
}
}

答案 3 :(得分:0)

这有效

public static void main(String[] args) {
    String name = "Draft112(admin211)";
    name = name.replaceAll("\\d+(?=\\()","");
    System.out.println(name);
}