两个不同符号的第一个实例之间的子串

时间:2017-03-08 12:17:40

标签: java string

我想解析以下内容并将其存储为新字符串,条件是存储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(">"));

不知道从哪里开始......有什么想法吗?

5 个答案:

答案 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);
  }
}