我得到了一个字符串,其中包含一堆用“,”分隔的数字,格式如下:
1.2223232323232323,74.00
我希望将它们放入 String [] 中,但我只需要逗号右侧的数字。 (74.00)。 该列表大约有 10,000 条不同的行,如上面的行。现在我正在使用 String.split(",") ,它给了我:
System.out.println(String[1]) =
1.2223232323232323
74.00
为什么它不分成两个不同的索引?我认为分割时应该是这样的:
System.out.println(String[1]) = 1.2223232323232323
System.out.println(String[2]) = 74.00
但是,在 String[] array = string.split (",") 上会生成一个索引,两个值均以换行符分隔。
我只需要 74.00 我假设我需要使用 REGEX,这对我来说有点希腊语。有人可以帮我吗:)?
最佳答案
如果它在文件中:
Scanner sc = new Scanner(new File("..."));
sc.useDelimiter("(\r?\n)?.*?,");
while (sc.hasNext())
System.out.println(sc.next());
如果都是一个巨大的字符串,用换行符分隔:
String oneGiantString = "1.22,74.00\n1.22,74.00\n1.22,74.00";
Scanner sc = new Scanner(oneGiantString);
sc.useDelimiter("(\r?\n)?.*?,");
while (sc.hasNext())
System.out.println(sc.next());
如果每个都只有一个字符串:
String line = "1.2223232323232323,74.00";
System.out.println(line.replaceFirst(".*?,", ""));
正则表达式解释:
(\r?\n)?
表示可选的换行符。
.
表示通配符。
.*?
表示 0 个或多个通配符( *?
与 *
不同,表示非贪婪匹配,但这对您来说可能没有多大意义)。
,
意思是,嗯,...,一个逗号。
<强> split
对于文件或单个字符串:
String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];
<强> split
对于一个巨大的字符串(也需要正则表达式)(但我更喜欢 Scanner
,它不需要所有内存):
String line = "1.22,74.00\n1.22,74.00\n1.22,74.00";
String[] array = line.split("(\r?\n)?.*?,");
for (int i = 1; i < array.length; i++) // the first element is empty
System.out.println(array[i]);
关于Java正则表达式,删除逗号左侧的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200297/