如何在equals('=')之前删除所有String文本

时间:2015-08-12 18:09:51

标签: java regex

我想解析一个字符串,以便我可以构建一个XML文档。

我有:

String value = "path=/Some/Xpath/Here";

我用这种方式解析了它:

private void parseXpath() {
    String s = "path=/Some/Xpath/Here";

    String[] tokens = s.split("/");
    for(String t: tokens){
        System.out.println(t);
    }
}

输出:

path=
Some
Xpath
Here

如何完全删除“path =”?我只想要来自xpath的值?

修改

感谢您的回复。

如何将此方法转换为返回String [],

的方法

示例:

private String[] parseXpath(String s) {

String[] tokens = s.replaceFirst(".*=", "").split("/");
   for(String t: tokens){
      System.out.println(t);
   }
   return tokens;
}

我的输出是:

[Ljava.lang.String;@413849df

如何让它返回我的字符串数组?

4 个答案:

答案 0 :(得分:6)

在拆分之前只需要替换。

String[] tokens = s.replaceFirst(".*=", "").split("/");

这首先会给你一个空元素,因为它会在替换之后拆分第一个正斜杠。

String[] tokens = s.replaceFirst(".*=/", "").split("/");

但是如果你删除=以及第一个正斜杠的所有字符将为你提供所需的输出。

答案 1 :(得分:3)

虽然问题标有regex,但这是使用substring

的解决方案
    String[] tokens = s.substring(s.indexOf("=") + 1).split("/");

    String[] tokens = s.substring(s.indexOf("=/") + 1).split("/");

答案 2 :(得分:2)

尝试:

private void parseXpath() {
    String s = "path=/Some/Xpath/Here";
    s = s.replace("path=","");

    String[] tokens = s.split("/");
    for(String t: tokens){
        System.out.println(t);
    }
}

你也可以完全避免删除它,如果你被其他正则表达式path=/Some/Xpath/Here使用,请使用lookbehind而不是完全匹配:

(?<=path=)[^\\,]*

你应该得到/Some/Xpath/Here

EDIT 如果要将数组打印为String,请使用静态方法Arrays.toString(yourArray);

答案 3 :(得分:1)

如果你正在研究性能,你应该避免使用split,因为它使用的是常规表达式,这对于这样一个简单的问题来说有点过大。 如果您只想删除“path =”并且您确定您的字符串始终以这种方式启动,则可以使用以下内容:

String s = "path=/Some/Xpath/Here";
String prefix = "path=";
String result = s.substring(prefix.length);