【发布时间】:2016-04-26 17:47:37
【问题描述】:
我想使用正则表达式而不是 StringTokenizer 来拆分字符串。我正在使用 String.split(regex); 正则表达式包含元字符,当我使用 \[ 它在返回数组中返回额外的空间。
import java.util.Scanner;
public class Solution{
public static void main(String[] args) {
Scanner i= new Scanner(System.in);
String s= i.nextLine();
String[] st=s.split("[!\\[,?\\._'@\\+\\]\\s\\\\]+");
System.out.println(st.length);
for(String z:st)
System.out.println(z);
}
}
当我输入[a\m]
它返回数组长度为 3 和
a m
a 之前也有空格。 谁能解释为什么会发生这种情况以及我该如何纠正它。我不希望结果数组中有额外的空间。
【问题讨论】:
-
你的意思是输入字符串
String s="[a\\m]"? -
因为你匹配
[和]:regexr.com/3ckg2 -
您只是将一个空字符串作为数组中的第一个元素,因为您的输入以
[开头,并且拆分也在[上完成。 -
从一开始就删除所有这些字符。 ideone.com/PXWLYg
-
不,它不会删除 all,只会删除开头的那些。您对那些前导符号不感兴趣,因为它们会产生空数组元素,对吧?因此,仅在字符串开头删除它们是一种有效的方法。
标签: java regex java-8 metacharacters