Android - 如何替换此类字符串中的数字?

时间:2016-04-10 10:41:50

标签: java android string android-studio str-replace

有谁知道如何替换此类字符串中的数字并删除第二部分(如果存在)?

我知道这听起来很奇怪,让我解释一下。

每次处理的字符串都不同:

数字(我需要替换的数字)可以是1数字到10位数,从:0到:9999999999(也可以是零) 0000000000)。

在号码前总是有一个字符(可以是任何字符,无论如何),例如:X0000a00h000000G000

有时可能会有另一部分跟在它后面(以连字符开头,如果存在,我需要删除此部分),例如:X000-X00000X0000-X00X00-X0

有时候可能会有另外一个字符(可能是任何字符,任何情况下,以连字符开头,如果存在,我需要保留此部分),例如:X00000-XX0000-X000-X,{ {1}},a000-h

我不知道如何替换第一部分(如果存在),删除第二部分(如果存在)并保留最后一部分(如果存在),这是我需要的一个例子:

g00000-j00-Y

在这个例子中,我主要使用0和X,但是如同解释的那样,可以是0或任何数字,可以是X或任何字符(大写或小写)。

编辑:忘记提及,我需要得到这个数字,用它做数学然后替换它,不仅仅是替换它。

有谁知道怎么做?非常感谢。

2 个答案:

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


    }