之間更換子,我有以下XML片段作爲一個字符串:爪哇 - 找到兩個模式字符串
String str ="<xs:user>userName</xs:user><xs:password>userPassword</xs:password>
<xs:address>addressString</xs:address>";
什麼是與XXXXXXX更換的userPassword的最好方法?
編輯:xs(namespace)可以變化。
之間更換子,我有以下XML片段作爲一個字符串:爪哇 - 找到兩個模式字符串
String str ="<xs:user>userName</xs:user><xs:password>userPassword</xs:password>
<xs:address>addressString</xs:address>";
什麼是與XXXXXXX更換的userPassword的最好方法?
編輯:xs(namespace)可以變化。
這應該這樣做。這是我現在可以想到的最簡單的解決方案。
public static void main(String[] args) {
String str = "aaaaa<xs:password>userPassword</xs:password>bbbbbbbbbb";
String newPassword = "test";
String s2 = str.replaceAll("<xs:password>[^<]*</xs:password>", "<xs:password>" + newPassword + "</xs:password>");
System.out.println(s2);
}
的老校友爬網直通串計算策略是:
String in =
"<xs:user>userName</xs:user>" +
"<xs:password>userPassword</xs:password>" +
"<xs:address>addressString</xs:address>";
int pwStart = in.indexOf("<xs:password>") + 13;
int pwLen = in.indexOf("</xs:password>") - pwStart;
StringBuilder out = new StringBuilder();
out.append(in.substring(0, in.indexOf("<xs:password>") + 13));
for (int i = 0; i < pwLen; i++) {
out.append("x");
}
out.append(in.substring(in.indexOf("</xs:password>")));
System.out.printf("%s\n", in);
System.out.printf("%s\n", out);
在Java:
public static void replace(){
String str =
"<xs:user>userName</xs:user>" +
"<xs:password>userPassword</xs:password>" +
"<xs:address>addressString</xs:address>";
String[] s = str.split("><");
String[] t = s[1].split("password>");
String[] a = t[1].split("</xs:");
System.out.println(a[0]);
String newS = s[0] + "><" + t[0] + "password>" + "YOUR XXXXXXX GOES HERE" + "</xs:" + a[1] + "><" + s[2];
System.out.println(newS);
}
希望這有助於。
邊界/特例:如果密碼包含<? –