【问题标题】:What is the optimized way of finding and replacing specific set of strings in a lengthy string?在长字符串中查找和替换特定字符串集的优化方法是什么?
【发布时间】:2014-01-29 23:41:07
【问题描述】:

我需要混淆匹配的参数值

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);

【问题讨论】:

  • @NiklasB。有用。想知道这是否可以通过更优化的方式来实现。
  • 如果paramsToObfuscate.length > 1 怎么办?除非我很愚蠢,否则在这种情况下它不应该起作用。说paramsToObfuscate = { "password", "tokenID",你应该得到visitorNo=8989&password=$$<unobfuscated password>&tokenID=<unobfuscated token>$$ 不是很有效的混淆。

标签: java string optimization replace


【解决方案1】:

只有两个参数,没有更快的方法。如果有几十个,你可以使用

Set<String> paramsToObfuscate = new HashSet<String>();

和Set.contains,这肯定比几十次测试要快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多