我想从特定的位置位置删除数值。我使用了正则表达式,但它删除了字符串中的每个数字值。
我有这些字符串:
Draft1(admin)
Draft2(adminn)
Draft21(admin23)
Draft112(admin211)
我希望这些字符串为:
Draft(admin)
Draft(adminn)
Draft(admin23)
Draft(admin211)
目前我使用了正则表达式:
name = name.replaceAll("\\d", "");
取代所有数值,我得到类似的东西:
Draft(admin)
答案 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);
}