Java正则表达式,删除逗号左侧的内容

时间:2013-03-04 11:17:53

标签: java regex

我得到一个字符串,其中包含一串用“,”分隔的数字,格式如下:

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,这对我来说是一种希望。有人可以帮帮我:)?

3 个答案:

答案 0 :(得分:2)

如果它在文件中:

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个或更多通配符(*?而不是*表示非贪婪匹配,但这对您来说可能并不重要。)
,意思是,......,逗号。

Reference

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]);

答案 1 :(得分:0)

试试:

String[] parts = "1.2223232323232323,74.00".split(",");
String value   = parts[1]; // your 74.00

答案 2 :(得分:0)

String[] strings = "1.2223232323232323,74.00".split(",");