Setter 不替换字符串中的字符
Setter not replacing charactes on string
我正在为域 class 编写 setter。保存的是一个 xml,它是来自 Web 服务的响应。它包括用户的名字和姓氏,但需要屏蔽该信息。所以我正在尝试使用正则表达式来完成它。
我写了下面的setter方法:
public void setOnlineRetroCreditResponse(String xml) {
xml.replaceAll (/(?<=lastName=)([^\s]+)/){lastName ->
lastName[0].replace ( lastName[1], "X".multiply (lastName[1].size()))
}
onlineRetroCreditResponse = xml
}
我期待像这样的刺痛:"FFPAccountNumber2=12345 lastName=Doe" 被替换并像这样 "FFPAccountNumber2=12345 lastName=XXX" 保存到数据库,但它没有按预期工作。我使用不同的在线方式测试了我的正则表达式,例如 https://www.freeformatter.com/java-regex-tester.html,这似乎不是问题所在。
如有任何想法,我们将不胜感激。
有两件事:1) 您没有将替换的值分配回 xml
变量,以及 2) 您正在显式替换匹配项,同时您可以对您拥有的值进行必要的修改拍到return吧。
实际上,您甚至不需要捕获 non-whitespace 个字符块,您可以在 replaceAll 回调中访问整个匹配项。此外,您可以使用 \S
而不是 [^\s]
。
使用
public void setOnlineRetroCreditResponse(String xml) {
onlineRetroCreditResponse = xml.replaceAll(/(?<=lastName=)\S+/){lastName ->
"X".multiply(lastName[0].size())
}
}
我正在为域 class 编写 setter。保存的是一个 xml,它是来自 Web 服务的响应。它包括用户的名字和姓氏,但需要屏蔽该信息。所以我正在尝试使用正则表达式来完成它。
我写了下面的setter方法:
public void setOnlineRetroCreditResponse(String xml) {
xml.replaceAll (/(?<=lastName=)([^\s]+)/){lastName ->
lastName[0].replace ( lastName[1], "X".multiply (lastName[1].size()))
}
onlineRetroCreditResponse = xml
}
我期待像这样的刺痛:"FFPAccountNumber2=12345 lastName=Doe" 被替换并像这样 "FFPAccountNumber2=12345 lastName=XXX" 保存到数据库,但它没有按预期工作。我使用不同的在线方式测试了我的正则表达式,例如 https://www.freeformatter.com/java-regex-tester.html,这似乎不是问题所在。
如有任何想法,我们将不胜感激。
有两件事:1) 您没有将替换的值分配回 xml
变量,以及 2) 您正在显式替换匹配项,同时您可以对您拥有的值进行必要的修改拍到return吧。
实际上,您甚至不需要捕获 non-whitespace 个字符块,您可以在 replaceAll 回调中访问整个匹配项。此外,您可以使用 \S
而不是 [^\s]
。
使用
public void setOnlineRetroCreditResponse(String xml) {
onlineRetroCreditResponse = xml.replaceAll(/(?<=lastName=)\S+/){lastName ->
"X".multiply(lastName[0].size())
}
}