我编写了一个程序,用 |o|
和 |e|
符号分割字符串。
这是我的整个字符串(我想要处理):
code|e|0.07610 |o| p|e|0.02225 |o| li|e|0.02032 |o| applet|e|0.01305 |o| pre|e|0.01289
我编写了一个实用函数来解析上面的字符串,以下是该实用函数的一部分:
String [] trs = tgs[1].split("[^ |o| ]"); //tgs[1] have the whole string
for (int i=0 ; i<9; i++) {
String t = trs[i].split("[^|e|]")[0];
e.add(new ProbTranslate(t, Double.parseDouble(trs[i].split("[^|e|]")[1])));
}
但这似乎是不正确的(因为我调试了程序然后得到了错误的结果)。我觉得我的错误在于不正确的正则表达式部分。所以我寻找一个合适的正则表达式来解析上面的字符串。
如有任何帮助,我们将不胜感激。谢谢。
最佳答案
为了在正则表达式中引用特殊字符,Java提供了一个方法:java.util.regex.Pattern#quote
适用于上面的示例,这可以例如导致
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
final String[] split1 = "code|e|0.07610 |o| p|e|0.02225 |o| li|e|0.02032 |o| applet|e|0.01305 |o| pre|e|0.01289".split(Pattern.quote(" |o| "));
for (int i = 0; i < split1.length; ++i) {
final String name = split1[i];
final String[] split2 = name.split(Pattern.quote("|e|"));
for (int j = 0; j < split2.length; ++j) {
System.out.println(split2[j]);
}
System.out.println("");
}
}
}
输出:
code
0.07610
p
0.02225
li
0.02032
applet
0.01305
pre
0.01289
关于java - 如何匹配由 "|e|"符号分割的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41458444/