Java 如何替换字符串中的单词?

Java 如何替换字符串中的单词?,java,string,Java,String,我使用了一个字符串,比如: String message = "%%NAME is inviting you"; 我正在使用message.replaceAll(“%%NAME”,我)其中me是一个字符串。这行代码对我不起作用。我想知道我做错了什么?代码看起来或多或少还行,不过可能有一些语法问题。下面是一个工作示例: String message = "%%NAME is inviting you."; String name = "Diana"; String result = messag

我使用了一个
字符串
,比如:

String message = "%%NAME is inviting you";

我正在使用
message.replaceAll(“%%NAME”,我)其中
me
是一个
字符串
。这行代码对我不起作用。我想知道我做错了什么?

代码看起来或多或少还行,不过可能有一些语法问题。下面是一个工作示例:

String message = "%%NAME is inviting you.";
String name = "Diana";
String result = message.replaceAll("%%NAME", name);
在这种情况下,我建议使用而不是
replaceAll

更新-示例 …将不会修改“消息”,因为字符串(在java中)是不可变的

String message = "%%name is inviting you";
String uname = "Keyser Sose";
message = message.replaceAll("%%name", uname);

…会有用的。(注意“message”的重新分配)

Rythm一个java模板引擎,现在发布了一个名为的新功能,它允许您执行以下操作:

String result = Rythm.render("@name is inviting you", "Diana");
上面的案例显示,您可以按位置将参数传递给模板。Rythm还允许您按名称传递参数:

Map<String, Object> args = new HashMap<String, Object>();
args.put("title", "Mr.");
args.put("name", "John");
String result = Rythm.render("Hello @title @name", args);
Map args=newhashmap();
参数put(“标题”、“先生”);
args.put(“姓名”、“约翰”);
String result=Rythm.render(“Hello@title@name”,args);
注意:Rythm速度非常快,大约是String.format和velocity的2到3倍,因为它将模板编译成java字节码,所以运行时性能非常接近StringBuilder的Concatation

链接:

  • 检查
  • 阅读
  • 下载或

要使用StringUtil.replace将一个字符串替换为另一个字符串,我尝试了以下操作,从单个字符串替换多个字符串值对我来说效果很好

String info=“[$FIRSTNAME$][$LASTNAME$][$EMAIL$].[$ADDRESS$]”

String replacedString=StringUtil.replace(信息,新字符串[]{“[$FIRSTNAME$]”,“[$LASTNAME$]”,“[$EMAIL$]”,“[$ADDRESS$]”,新字符串[]{“XYZ”,“ABC”,”abc@abc.com“,”ABCD“})


这将用新提供的值替换info的字符串值…

请发布您正在使用的代码(这不起作用)哦,我想您可以调用该方法,它将替换它。Thanks@SeanJava中的字符串是不可变的:它们不能更改。martyman在这里做的是创建一个新字符串,替换%%NAME.+1:string.format是个好主意,假设Sean使用的是Java>=1.5。你能不能也发一个例子?我喜欢的是,你可以多次重复使用模板。因此,您可以将它与Bob、Mary、Peter等一起使用。如果Java中的字符串是不可变的,那么如何使用
message=message.replaceAll(“%%name”,uname)
替换
消息
字符串对象?
消息
是指向内存块的指针,内存块中填充了
字符串
对象。该内存块的内容通过
字符串
对象的方法访问。由于这些方法都不允许修改任何内部状态,
String
被认为是不可变的。“message.replaceAll(“%name”,uname);”调用返回一个指向新的、不同的
字符串的指针,即不同的内存块。因此,
message=message.replaceAll(“%%name”,uname)代码行重新分配
消息
指针指向的内存块。谢谢,现在我得到了它
String result = Rythm.render("@name is inviting you", "Diana");
Map<String, Object> args = new HashMap<String, Object>();
args.put("title", "Mr.");
args.put("name", "John");
String result = Rythm.render("Hello @title @name", args);