Java 在这种情况下,如何正确使用字符串替换?

Java 在这种情况下,如何正确使用字符串替换?,java,Java,我有一个短信模板如下所示 用户:XXXXXXXXXXXXXXXX,Ph:XXXXXXXXX,Loc:XXXXXXXXXXXXXXXXXXXXXXXXX,区域:XXXXXXXXXXXXXXXXXXXXX,添加您进行送货上门。请查看详细信息 其中XXXXXX需要用动态值填充 我试过这种方法,如下所示 但是当我运行程序时,我得到的输出是 User: Kiran, Ph: 11111111111111, Loc: KiranXX, Area: KiranXX, added you for Home De

我有一个短信模板如下所示

用户:XXXXXXXXXXXXXXXX,Ph:XXXXXXXXX,Loc:XXXXXXXXXXXXXXXXXXXXXXXXX,区域:XXXXXXXXXXXXXXXXXXXXX,添加您进行送货上门。请查看详细信息

其中XXXXXX需要用动态值填充

我试过这种方法,如下所示

但是当我运行程序时,我得到的输出是

User: Kiran, Ph: 11111111111111, Loc: KiranXX, Area: KiranXX, added you for Home Delivery. Please review details
它在末尾添加了XX 这是我的节目

import java.net.UnknownHostException;

import org.apache.log4j.Logger;

public class Test {
    final static Logger logger = Logger.getLogger(Test.class);

    public static void main(String args[]) throws UnknownHostException
    {

        String user = "Kiran";
        String phone = "11111111111111";
        String loc = "my location";
        String area = "my area";


        String message = "User: XXXXXXXXXXXXXXXXXX, Ph: XXXXXXXXXX, Loc: XXXXXXXXXXXXXXXXXXXX, Area: XXXXXXXXXXXXXXXXXXXX, added you for Home Delivery. Please review details\r\n" + 
                "";

        message = message.replace("XXXXXXXXXXXXXXXXXX", user);
        message = message.replace("XXXXXXXXXX", phone);
        message = message.replace("XXXXXXXXXXXXXXXXXXXX", loc);
        message = message.replace("XXXXXXXXXXXXXXXXXXXX", area);

        System.out.println(message);


    }

}
你能告诉我如何解决这个问题吗???

你应该使用这个:

String template = "User: %s, Ph: %s, Loc: %s, Area: %s, added you for Home Delivery. Please review details\r\n";

String result = String.format(template, user, phone, loc, area);

第一次替换肯定是错误的

我将这样编写代码:

编辑:

我的建议是:

message = message.replace( "User:\\s+X+", "User: " + user );
这将:

忽略User:和X后面有多少空格 忽略有多少个X,把它们全部吃掉
你到底为什么要用Xs来做这件事?那是给我的模板,我知道我应该用{user_name}正则表达式,但我很无助,我知道String.formatTemplate是谁给你的?为什么你不能改变它,或者告诉他们提供一些不那么透明的东西?除非你按长度顺序替换所有的东西,否则这是行不通的,如果两个长度相同怎么办?看在上帝的份上,你能不能像你说的那样把这些X变成变量linke{user_name}?首先,你能解释一下为什么要这样做吗?第二,冒号后面的空格怎么了?是的,你在冒号后面加了一个空格。此外,我将使用\\s+,这意味着至少有一个更灵活的空白字符
message = message.replace( "User:\\s+X+", "User: " + user );