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);