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

Java正则表达式,删除逗号左边的内容,java,regex,Java,Regex,我得到了一个字符串,其中有一组数字,以“,”分隔,格式如下: 1.2223232323232323,74.00 我希望将它们转换为字符串[],但我只需要逗号右侧的数字。(74.00). 该列表大约有10000行不同的行,与上面的一样。现在我使用String.split(“,”),它给出了: System.out.println(String[1]) = 1.2223232323232323 74.00 为什么它不分成两个不同的索引?我想在split上应该是这样的: System.out.

我得到了一个字符串,其中有一组数字,以“,”分隔,格式如下:

1.2223232323232323,74.00
我希望将它们转换为字符串[],但我只需要逗号右侧的数字。(74.00). 该列表大约有10000行不同的行,与上面的一样。现在我使用String.split(“,”),它给出了:

System.out.println(String[1]) =
1.2223232323232323 
74.00
为什么它不分成两个不同的索引?我想在split上应该是这样的:

 System.out.println(String[1]) = 1.2223232323232323
 System.out.println(String[2]) = 74.00
但是,在字符串[]上,array=String.split(“,”)生成一个索引,其中两个值用换行符分隔

我只需要74.00,我想我需要使用正则表达式,这对我来说有点希腊化。有人能帮我吗:)?

试试:

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

如果它在文件中:

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(".*?,", ""));
String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];
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]);
如果都是一根巨大的绳子,用新行隔开:

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(".*?,", ""));
String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];
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]);
如果每个字符串只有一个字符串:

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(".*?,", ""));
String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];
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]);
正则表达式解释:

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(".*?,", ""));
String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];
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]);
(\r?\n)
表示可选的新行字符。
表示通配符。
*?
表示0个或多个通配符(
*?
而不仅仅是
*
表示非贪婪匹配,但这可能对您意义不大)。
是逗号的意思

拆分文件或单个字符串:

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(".*?,", ""));
String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];
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]);
split
用于一个巨大的字符串(也需要正则表达式)(但我更喜欢
Scanner
,它不需要所有的内存):

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(".*?,", ""));
String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];
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]);
String line=“1.22,74.00\n1.22,74.00\n1.22,74.00”;
字符串[]数组=line.split((\r?\n)?*,”;
for(int i=1;i
如果您使用的是String.split(“,”),为什么不在数组中保留一个索引呢?
String.split(“,”[1]
将是您要查找的内容,或者请稍候。。。我明白问题所在。关键的一行是:“这个列表有大约10000行不同的行,就像上面的一样。”这就是为什么你想要一个正则表达式。。。因为显然您不想遍历所有变量(或者您没有考虑到这种可能性),所以请避免使用
String
作为变量名,因为它是类的名称。java中的变量名应以小写字母开头。另外,结果中的索引应该是0和1,而不是1和2。问题是如果我写:String[]parts=“1.2223233,74.00”。split(,”;和do syso(parts[1])输出是:“1.22232323”(newline)“74.00”,我假设它应该是parts[1]=1.22323等等。。部分[2]=74.00,但它不是..当我使用你的弦线时,你的分割线工作得很好。但是如果我将字符串与10000个数据行一起使用,它会给med一个输出:74.00 1.213114114,我不明白为什么。。文档中的每一行都是换行的。@iNzzane已编辑。尝试第二个选项。你的正则表达式有效,拆分无效。我想是因为这是一条新线。下一行的第一个数字将与前一行合并。无论如何,谢谢你!