Thi*_*mer 10 java string split escaping wildcard
所以我在我的程序中编写了一小段代码,它使用split方法解析并对字符串中包含的各个组件进行排序.以下是代码示例:
String[] sArray;
String delimiter = "*";
String test = "TEXT*TEXT*TEXT*";
String a = "";
String b = "";
String c = "";
sArray= test.split(delimiter);
a = sArray[0];
b = sArray[1];
c = sArray[2];
System.out.println("A is: " + a + "\nB is: " + b + "\nC is: " + c);
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此程序时,它会返回一个错误,指出:
Dangling meta character '*' near index 0
所以我搜索了这个错误,发现它可能与如何*在正则表达式中被视为通配符的问题有关.所以我尝试过:
String delimiter = "\*"
但那只是返回了另一个错误说明:
illegal escape character
有没有人之前遇到过这个问题,或者知道你是如何(如果你的话)应该*在java中逃脱?
jlo*_*rdo 25
你还必须逃避反斜杠:
String delimiter = "\\*";
Run Code Online (Sandbox Code Playgroud)
因为字符串文字"\\"只是一个反斜杠,所以字符串文字"\\*"表示转义的星号.
理解解决方案的方法是认识到这里有两种"语言".你有正则表达式的语言(Java风格),其中*是一个元字符,需要转义为a \来表示文字*.那给了你
''\*'' // not Java yet ...
Run Code Online (Sandbox Code Playgroud)
但是您试图在Java String文字的"语言"中表示该字符串,其中a \是转义字符.所以这要求\必须转义任何文字(无论我们试图表示什么).这给了你
"\\*" // now Java ...
Run Code Online (Sandbox Code Playgroud)
如果你应用这种方法/思考一致 - "首先进行正则表达式转义,然后执行字符串文字转义" - 你不会感到困惑.
| 归档时间: |
|
| 查看次数: |
13314 次 |
| 最近记录: |