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

标签 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,这对我来说有点希腊语。有人可以帮我吗:)?

最佳答案

如果它在文件中:

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

关于Java正则表达式,删除逗号左侧的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200297/

相关文章:

java - Java 中以数字开头,然后是点和逗号的字符串

PHP 名称验证

c# - C# Regex.Split() 中的正则表达式排除

java - 自定义 ListView Android 的 getView nullPointerException

java - 暴力破解: Find Digits

java - 在 Spring Boot 中使用 RestTemplate 时,Long 值始终为 null

带有 CFBundleDocumentTypes 的 JavaApplicationStub

javascript - IE Javascript String.Match 问题

ios - 如何从 iOS 中的用户输入中删除数字?

java - 调整序列化 DOM 中的 XML 命名空间声明样式