我希望从用户那里获取字符串输入并提取单词或数字,如下所示:
String problem = "I'm lo#o@king t%o ext!r$act a^ll 6 su*bs(tr]i{ngs.";
String[] solve = {"I'm", "looking", "to", "extract", "all", "6", "substrings"};
基本上,我想提取数字和单词而完全忽略除了撇号之外的标点符号。我知道如何获得单词和字符串,但我似乎无法弄清楚这个棘手的部分。
答案 0 :(得分:1)
你可以这样做。
String s = "I'm lo#o@king t%o ext!r$act a^ll 6 su*bs(tr]i{ngs.";
String parts[] = s.replaceAll("[^\\s\\w']|(?<!\\b)'|'(?!\\b)", "").split("\\s+");
System.out.println(Arrays.toString(parts));
输出:
[I'm, looking, to, extract, all, 6, substrings]
<强>解释强>
[^\\s\\w']
匹配任何字符,但不匹配空格或单引号或字符。
(?<!\\b)'(?!\\b)
只有在'
符号前面没有符号后才会匹配。
replaceAll
函数用空字符串替换所有匹配的字符。
最后,我们根据一个或多个空格字符对结果字符串进行拆分。