对于我的项目,我必须阅读各种输入图。不幸的是,输入边的格式不同。有些是逗号分隔的,有些是制表符分隔的,等等。例如:
文件1:
123,45
67,89
...
文件2
123 45
67 89
...
我不想单独处理每个案例,而是想自动检测拆分字符。目前我开发了以下解决方案:
String str = "123,45";
String splitChars = "";
for(int i=0; i < str.length(); i++) {
if(!Character.isDigit(str.charAt(i))) {
splitChars += str.charAt(i);
}
}
String[] endpoints = str.split(splitChars);
基本上,我选择第一行并选择所有非数字字符,然后使用生成的子字符串作为拆分字符。有没有更干净的方法?
3条答案
按热度按时间gv8xihay1#
把绳子分开
\\D+
表示一个或多个非数字字符。演示:
输出:
h6my8fg22#
split需要一个regexp,所以您的代码会失败有很多原因:如果分隔符在regexp中有意义(比如,
+
),它会失败的。如果有超过1个非数字字符,代码也会失败。如果代码包含的数字超过2个,那么它也会失败。想象一下它包含hello, world
-然后你的splitchars字符串变成" , "
-而你的分裂将什么也做不到(那将分裂字符串)"test , "
一分为二,没有别的)。为什么不做一个regexp来获取数字,然后找到所有的数字序列,而不是集中在分隔符上呢?
不管您愿意与否,您都在使用regexps,所以让我们正式使用它并使用模式。
juzqafwq3#
为什么不用[^\d]+(每组非IGnit)拆分:
结果: