我想解析以下内容并将其存储为新字符串,条件是存储mawi
并删除其他所有内容。
<ns0:Assignee>mawi - Manfred Wilson</ns0:Assignee>
我认为一个解决方案可能是一个子字符串,以第一个>
之后的第一个字符开头,并在第一个-
之前结束两个字符。所有数据都是相同的。结果是一个值为mawi
的String。
String initial = "<ns0:Assignee>mawi - Manfred Wilson</ns0:Assignee>";
String substring = initial.substring(example.indexOf(">"));
不知道从哪里开始......有什么想法吗?
答案 0 :(得分:2)
虽然下面的代码可以解决这个问题,但如果你正在处理像这样的多个字符串,我建议你使用Jsoup或XML Parse
Pattern pattern = Pattern.compile("<ns0:Assignee>(.+?)</ns0:Assignee>");
Matcher matcher = pattern.matcher("<ns0:Assignee>mawi - Manfred Wilson</ns0:Assignee>");
matcher.find();
String result = matcher.group(1);
String finalString = result.split(" - ")[0];
System.out.println(finalString); // mawi
答案 1 :(得分:2)
如果所有字符串都像你的示例字符串一样构建,你可以使用它:
initial.substring(initial.indexOf('>') + 1, initial.indexOf(' '));
请注意起始索引处的+ 1
。
当你的字符串更复杂时,我建议使用库来处理XML或使用正则表达式。
答案 2 :(得分:1)
显示:
String s = "<ns0:Assignee>mawi - Manfred Wilson</ns0:Assignee>";
s = s.substring(s.indexOf("<ns0:Assignee>")+"<ns0:Assignee>".length(), s.indexOf("</ns0:Assignee>"));
答案 3 :(得分:1)
所以现在你得到的substring
等于:>mawi - Manfred Wilson</ns0:Assignee>
。
现在,您可以再次对子字符串进行子字符串以仅查找 mawi ,就像这样;
String initial = "<ns0:Assignee>mawi - Manfred Wilson</ns0:Assignee>";
String midSub = initial.substring(initial.indexOf('>'));
String finalSub = midSub.substring(1, midSub.indexOf(' ')); // 1 because we still have `>`
System.out.println(finalSub);
或者,一个班轮:
String finalSub = initial.substring(initial.indexOf('>')+1, initial.indexOf(' '));
答案 4 :(得分:1)
public class string {
public static void main(String[] args) {
String s = "<ns0:Assignee>mawi - Manfred Wilson</ns0:Assignee>";
s = s.substring(14, 18);
System.out.println(s);
}
}