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=$$
这不是一个非常有效的混淆。