有谁知道如何替换此类字符串中的数字并删除第二部分(如果存在)?
我知道这听起来很奇怪,让我解释一下。
每次处理的字符串都不同:
数字(我需要替换的数字)可以是1
数字到10
位数,从:0
到:9999999999
(也可以是零) 0000000000
)。
在号码前总是有一个字符(可以是任何字符,无论如何),例如:X0000
,a00
,h000000
,G000
。
有时可能会有另一部分跟在它后面(以连字符开头,如果存在,我需要删除此部分),例如:X000-X00000
,X0000-X00
,X00-X0
。
有时候可能会有另外一个字符(可能是任何字符,任何情况下,以连字符开头,如果存在,我需要保留此部分),例如:X00000-X
,X0000-X000-X
,{ {1}},a000-h
。
我不知道如何替换第一部分(如果存在),删除第二部分(如果存在)并保留最后一部分(如果存在),这是我需要的一个例子:
g00000-j00-Y
在这个例子中,我主要使用0和X,但是如同解释的那样,可以是0或任何数字,可以是X或任何字符(大写或小写)。
编辑:忘记提及,我需要得到这个数字,用它做数学然后替换它,不仅仅是替换它。有谁知道怎么做?非常感谢。
答案 0 :(得分:2)
一种方法是使用replace()
和substring()
执行此操作,如下所示:
public static void main (String[] args) throws Exception {
String input = "X000-X";
String replacement = "123";
int ls = input.lastIndexOf("-");
int fs = input.indexOf("-");
System.out.println("Extracted Number: " + (fs < 1 ? input.substring(1) :
input.substring(1,fs)));
System.out.println("Final Output: " + input.substring(0,1) + replacement +
(ls != fs || fs == input.length() - 2 ? input.substring(ls) : ""));
}
输出:
Extracted Number: 000
Final Output: X123-X
答案 1 :(得分:2)
我只给你一个例子,并且你可以按照要求进行相同的操作,或者你可以将一些行分成不同的方法以及你的要求,
String value = "X000-X000000";
if(value.contains("-")){
String match="";
String[] elements = value.split("-");
Pattern pattern = Pattern.compile("[0-9]+");
Matcher matcher = pattern.matcher(elements[0]); //For the first element that is X000
while (matcher.find()) {
match = matcher.group(); //Numeric is match that is 000
}
//Do whatever you want to do with 000 here like I replaced 123 here
elements[0] = elements[0].replace(match, String.valueOf(123));
StringBuilder builder = new StringBuilder();
for(String s : elements) {
builder.append(s + "-");
}
value = builder.toString().substring(0,builder.length()-1); //Your final value that can be returned as well
}