使用java替换出现的String

时间:2017-04-10 10:11:34

标签: java string

我有一个字符串需要被出现

替换

我的代码:

String value="EMPID,NAME,AGE,ADDRESS,PROJECT,DOMAIN,Work Item $WORKNUMBER$ is assigned to $ASSIGNEDTO$ due to $REASON$,~WORKNUMBER~ASSIGNEDTO~REASON~"

            String[]  value_split = value.split("\\,");
            System.out.println(value_split[6]);
            String template=value_split[6];
            String var=value_split[7];
            String[] bindvar=var.split("~");
            String finaltemplate="";
            for (String string : bindvar) {
                //System.out.println(string);
                String valuefromQueue=getQueueLog(string);
                //System.out.println(valuefromQueue);
                System.out.println(template.replace("$",valuefromQueue ));
            }

public static String getQueueLog(String var) {

    String resval ="";

    if (var == null) {
        return var;
    }

    switch (var) {
        case "WORKNUMBER":
            resval = "12123123";
            break;
        case "ASSIGNEDTO":
            resval = "RM";
            break;
        case "REASON":
            resval = "NEW LC";
            break;
        }

    return resval;
}

我在String template =工作项$ WORKNUMBER $被分配到$ ASSIGNEDTO $由于$ REASON $

and valuefromQueue = 12123123 RM NEWLC

Expected  Output should be :Work Item 12123123 is assigned to RM due to NEWLC 

我的输出: 由于12123123REASON12123123,工作项12123123WORKNUMBER12123123被分配到12123123ASSIGNEDTO12123123

2 个答案:

答案 0 :(得分:1)

你替换不好,你的模板是$ keyWord $,所以template.replace("$"+string+"$",valuefromQueue )

答案 1 :(得分:0)

a

您要替换`template.replace("$", valuefromQueue)` 的所有匹配项。这些显示为所有占位符($)的前缀和后缀。输出正是我所期望的。

要获得所需的输出,您需要指定确切的占位符,如下所示:

$WORKNUMBER$

查看您的`template.replace("$WORKNUMBER$", valuefromQueue)` 方法,看起来好像getQueueLog()包含没有美元符号的占位符字符串(stringWORKNUMBERASSIGNEDTO)。因此,您应该可以将其用于REASON

replace()

注意:由于您似乎没有在其他地方使用`template.replace("$" + string + "$", valuefromQueue)` ,因此可以缩短此时间:

valuefromQueue

......对此:

for (String string : bindvar) {
    String valuefromQueue=getQueueLog(string);
    System.out.println(template.replace("$" + string + "$", valuefromQueue));
}