我想解析一个字符串,以便我可以构建一个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
如何让它返回我的字符串数组?
答案 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);