【发布时间】:2018-01-09 14:01:30
【问题描述】:
我一直在关注How to split a string in Java 的帖子并成功了。
但在当前用例中,我正在处理的 String 包含特殊字符。
我有一个String 作为https://{domain name}/{type of data}/4583236-{name-of-perpetrators},我想从中提取4583236。
QA How to split the string using '^' this special character in java? 或多或少与我之前已经提到的问题相关,但对我的用例没有帮助。
我的程序在任一特殊字符上随机抛出 PatternSyntaxException: Illegal repetition。
代码块:
String current_url = "https://{domain name}/{type of data}/4583236-{name-of-perpetrators}";
String[] urlParts = current_url.split("type of data}/");
String mySuburl = urlParts[1];
String[] suburl = mySuburl.split("-{name-of-perpetrators");
String mytext = suburl[0];
System.out.println(mytext);
错误堆栈跟踪:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition
{name-of-perpetrators
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.closure(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.split(Unknown Source)
at java.lang.String.split(Unknown Source)
at demo.TextSplit.main(TextSplit.java:18)
【问题讨论】:
-
为什么不在“/”上拆分,然后选择正确的起点。在那里你可以(更)轻松地提取数值。
-
@Stultuske 感谢您的建议。但是与
/和-拆分不会打印任何内容。 -
其实不需要拆分几次。两个
indexOf和substring更好,可能性能更高。 -
@M.Prokhorov 我错过了你的建议。可以举个例子吗?
标签: java string split special-characters