String.replace()方法不起作用

时间:2015-12-22 11:19:45

标签: java string replace

我正在我公司的一个大项目上工作,我在使用String的替换方法时遇到了一个奇怪的错误。

以下是场景:

我使用检索这些属性的单例类从属性文件中获取值。我有一个DATA的字符串,其中包括两个替换键,它们应该用编程生成的值替换。

例如:

String strDetails = PropertyLoader.get("details");
String strDataKey1= PropertyLoader.get("datakey1");
String strDataKey2 = PropertyLoader.get("datakey2");

strDetails = strDetails.replace(strDataKey1, "Programmatically Generated Value 1");

strDetails = strDetails.replace(strDataKey2, "Programmatically Generated Value 2");

在上面的代码替换strDataKey1正在运行,但strDataKey2没有。

我创建了简单的Java程序来测试它,它的工作原理与我在上面两行中调试代码的方式相同,所有值都按预期进行,但strDataKey2的替换结果失败。

注意 - strKey1strKey2都有特殊字符'$'。 请告知是否有人知道如何解决它。我正在使用Eclipse最新版本的JavaEE我不能在我的公司使用其他IDE。

2 个答案:

答案 0 :(得分:1)

可能strDataKey1strDataKey2具有互补价值。

示例:

strDataKey1 = "foo";
strDataKey2 = "foobar"; 
strDetails = "foobar foo bar 123 foobar foo";

strDetails = strDetails.replace(strDataKey1, "Value1"); //4 matches
//strDetails is "Value1bar Value1 bar 123 Value1bar Value1"

strDetails = strDetails.replace(strDataKey2, "Value2"); //0 matches
//strDetails is "Value1bar Value1 bar 123 Value1bar Value1"

当您替换strDataKey1 “使用”主播,然后替换strDataKey2时,您无需修改​​。

检查strDataKey1strDataKey2中的值,并对它们进行一些考虑,比如用sentinel值,转义字符或分隔符包装它们(如果它可以解决问题)。

答案 1 :(得分:-1)

当你进行第二次替换时,似乎strDetails没有strDataKey2。 尝试重置如下,看看它是否有效

.//div