Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串'的问题;s replace()方法_Java_String - Fatal编程技术网

Java 字符串'的问题;s replace()方法

Java 字符串'的问题;s replace()方法,java,string,Java,String,我试图替换以$开头的字符串部分(我手动使用字符串中的参数),但由于某些原因,它失败了。以下是我所拥有的: public void sendNotificationOfAcceptedMeeting(String candidateName, DateTime dateTime) { Map<String,String> params = new HashMap<String,String>(); params.put("date", da

我试图替换以
$
开头的字符串部分(我手动使用字符串中的参数),但由于某些原因,它失败了。以下是我所拥有的:

 public void sendNotificationOfAcceptedMeeting(String candidateName, DateTime dateTime) {
        Map<String,String> params = new HashMap<String,String>();
        params.put("date", dateTime.toString(DATETIME_FORMAT));
        params.put("candidate", candidateName);
        sendEmailWithTemplate(TEMPLATE_ALL_ACCEPTED, params);
    }
但是,第三种方法中的系统输出打印:

    map size: 2
********************
The meeting request at $date with $candidate was 
accepted by all interviewers.   ***BEFORE
$candidate  ***KEY
Acceeedsasd Stetfghfghasd ***VALUE
The meeting request at $date with $candidate was 
accepted by all interviewers.   AFTER
********************
The meeting request at $date with $candidate was 
accepted by all interviewers.   ***BEFORE
$date  ***KEY
27/12/2014 8:00 ***VALUE
The meeting request at $date with $candidate was 
accepted by all interviewers.   AFTER
这清楚地表明它不能代替参数。。。我想可能是
$
破坏了它(regex),但是
replace()
不同于
replaceAll()
接受字符串-而不是regex。我没有主意了,谢谢你的帮助。

你必须这样做:

 toReturn = toReturn.replace("$" + entry.getKey(), entry.getValue());
然后打印toReturn的值,您必须执行以下操作:

 toReturn = toReturn.replace("$" + entry.getKey(), entry.getValue());
然后打印toReturn的值

尝试将代码中的“$”替换为“\0024”

像这样:

toReturn=toReturn.replace(“\0024”+entry.getKey(),entry.getValue())

尝试将代码中的“$”替换为“\0024”

像这样:


toReturn=toReturn.replace(“\0024”+entry.getKey(),entry.getValue())

问题在于replace方法返回一个
字符串,而该字符串未被使用。请参见下面我将结果放入
replacedText
的位置

String replacedText = toReturn.replace("$" + entry.getKey(), entry.getValue());
System.out.println("$" + entry.getKey() + "  ***KEY");
System.out.println(entry.getValue() + " ***VALUE");
System.out.println(replacedText+ "   AFTER");

问题是replace方法返回一个
字符串
,而该字符串未被使用。请参见下面我将结果放入
replacedText
的位置

String replacedText = toReturn.replace("$" + entry.getKey(), entry.getValue());
System.out.println("$" + entry.getKey() + "  ***KEY");
System.out.println(entry.getValue() + " ***VALUE");
System.out.println(replacedText+ "   AFTER");

字符串是不可变的,不能替换, 只是


字符串是不可变的,不能替换, 只是


:).. 至少你得到了答案:):。。至少您得到了答案:)正如我所说,$不是问题,因为replace将字符串作为输入,而不是regex。感谢您的尝试:)正如我所说,$不是问题,因为replace将字符串作为输入,而不是regex。感谢您的尝试:)
String replacedText = toReturn.replace("$" + entry.getKey(), entry.getValue());
System.out.println("$" + entry.getKey() + "  ***KEY");
System.out.println(entry.getValue() + " ***VALUE");
System.out.println(replacedText+ "   AFTER");
toReturn = toReturn.replace("$...","")