Java 在长字符串中查找和替换特定字符串集的优化方法是什么?
我需要混淆匹配参数的值Java 在长字符串中查找和替换特定字符串集的优化方法是什么?,java,string,optimization,replace,Java,String,Optimization,Replace,我需要混淆匹配参数的值 password, tokenID 示例查询字符串: visitorNo=89&password=demo&tokenID=yxr56 应混淆为: visitorNo=89&password=$$&tokenID=$$ 我所做的: String[] parameters = queryString.split("&"); StringBuffer qS = new StringBuffer(); for(String para
password, tokenID
示例查询字符串:
visitorNo=89&password=demo&tokenID=yxr56
应混淆为:
visitorNo=89&password=$$&tokenID=$$
我所做的:
String[] parameters = queryString.split("&");
StringBuffer qS = new StringBuffer();
for(String param : parameters) {
String[] keyValue = param.split("=");
qS.append(keyValue[0]);
qS.append("=");
for(String paramToObfuscate : paramsToObfuscate) {
if(paramToObfuscate.equals(keyValue[0])) {
qS.append("$$");
}
else {
qS.append(keyValue[1]);
}
}
qS.append("&");
}
String queryStr = qS.toString().substring(0, qS.length-1);
只有两个参数,没有更快的方法。如果有几十个,你可以使用
Set<String> paramsToObfuscate = new HashSet<String>();
Set-paramstoobfousate=new-HashSet();
和
Set.contains
,肯定比几十次测试都快。@NiklasB。它起作用了。想知道这是否可以通过更优化的方式实现。如果paramstoobfousate.length>1
?除非我很蠢,否则在那种情况下就不行了。假设paramstoobfousate={“password”,“tokenID”
,您应该得到visitorNo=8989&password=$$&tokenID=$$
这不是一个非常有效的混淆。