0

它看起来很简单,但我会在这里提供任何帮助:

我需要将密码值(可以是任何值)交换为“ * ***

原始刺痛是从 xml 中提取的字符串

问题是我只得到输出行:

         <parameter><value>*****</value></parameter>

但我需要整个字符串作为输出,只需要替换密码值

先感谢您

        String originalString = "<parameter>" +
            "<name>password</name>"+
            "<value>my123pass</value>"+
            "</parameter>"+
            "<parameter>"+
            "<name>LoginAttempt</name>"+
            "<value>1</value>"+
            "</parameter>";
    System.out.println("originalString: "+originalString);                         
    Pattern pat = Pattern.compile("<name>password</name><value>.*</value>");
    Matcher mat = pat.matcher(originalString);

    System.out.println("NewString: ");
    System.out.print(mat.replaceFirst("<value>***</value>"));
    mat.reset();  
4

1 回答 1

0

如果我没记错的话,您想用 * 更改字符串中的密码。您可以直接使用 String 方法来做到这一点。只需获取起始值标记的最后一个索引并迭代直到到达“<”,用 * 替换这两者之间的值。像这样的东西:

int from = originalString.lastIndexOf("<name>password</name><value>");
bool endIteration = false;
for(i = from + 1 ; i < originalString.length() && !endIteration ; i ++) {
    if(originalString.toCharArray()[i] == '<')
        endIteration = true;
    else {
        originalString.toCharArray()[i] = '*';
    }
}

编辑:还有另一种正确使用所有 String 类好东西的方法:

int from = originalString.lastIndexOf("<name>password</name><value>");
int to = originalString.indexOf("</value>", from);
Arrays.fill(originalString.toCharArray(), from, to, '*');
于 2012-05-06T14:30:11.507 回答