[英]Splitting String using split method
我想拆分这样的字符串:
C:\Program\files\images\flower.jpg
但是,使用以下代码:
String[] tokens = s.split("\\");
String image= tokens[4];
我得到了这个错误:
11-07 12:47:35.960: E/AndroidRuntime(6921): java.util.regex.PatternSyntaxException: Syntax error U_REGEX_BAD_ESCAPE_SEQUENCE near index 1:
尝试
String s="C:\\Program\\files\\images\\flower.jpg"
String[] tokens = s.split("\\\\");
在java(正则表达式世界) \\
是一个元字符。 如果要将元字符视为普通字符,则应附加一个\\或用\\ Q \\ E括起来。
下面是一些元字符
<([{\^-=$!|]})?*+.>
要将上面列出的任何字符视为普通字符,您必须使用'\\'将其转义或将它们括在\\ Q \\ E周围
喜欢:
\\\\ or \\Q\\\\E
您需要使用\\\\\\\\
进行拆分,因为原始字符串应该具有\\\\
。 使用以下测试用例自行尝试:
@Test
public void split(){
String s = "C:\\Program\\files\\images\\flower.jpg";
String[] tokens = s.split("\\\\");
String image= tokens[4];
assertEquals("flower.jpg",image);
}
解释字符串有两个级别,首先语言解析器使它成为"\\"
,这就是正则表达式引擎看到的并且它是无效的,因为它是一个没有字符转义的转义序列。
所以你需要使用s.split("\\\\\\\\")
,以便正则表达式引擎看到\\\\
,这反过来意味着文字\\
。
如果要在字符串文字中定义该字符串,则必须转义那里的反斜杠:
String s = "C:\\Program\\files\\images\\flower.jpg";
String [] tokens = s.split(“\\\\\\\\”);
尝试这个:
String s = "C:/Program/files/images/flower.jpg";
String[] tokens = s.split("/");
enter code hereString image= tokens[4];
您的原始输入文本应该是
C:\\Program\\files\\images\\flower.jpg
代替
C:\Program\files\images\flower.jpg
这有效,
public static void main(String[] args) {
String str = "C:\\Program\\files\\images\\flower.jpg";
str = str.replace("\\".toCharArray()[0], "/".toCharArray()[0]);
System.out.println(str);
String[] tokens = str.split("/");
System.out.println(tokens[4]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.