chriskvik
chriskvik

Reputation: 1281

Java regex, delete content to the left of comma

I got a string with a bunch of numbers separated by "," in the following form :

1.2223232323232323,74.00

I want them into a String [], but I only need the number to the right of the comma. (74.00). The list have abouth 10,000 different lines like the one above. Right now I'm using String.split(",") which gives me :

System.out.println(String[1]) =
1.2223232323232323 
74.00

Why does it not split into two diefferent indexds? I thought it should be like this on split :

 System.out.println(String[1]) = 1.2223232323232323
 System.out.println(String[2]) = 74.00

But, on String[] array = string.split (",") produces one index with both values separated by newline.

And I only need 74.00 I assume I need to use a REGEX, which is kind of greek to me. Could someone help me out :)?

Upvotes: 0

Views: 120

Answers (3)

Bernhard Barker
Bernhard Barker

Reputation: 55659

If it's in a file:

Scanner sc = new Scanner(new File("..."));
sc.useDelimiter("(\r?\n)?.*?,");
while (sc.hasNext())
  System.out.println(sc.next());

If it's all one giant string, separated by new-lines:

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

If it's just a single string for each:

String line = "1.2223232323232323,74.00";
System.out.println(line.replaceFirst(".*?,", ""));

Regex explanation:

(\r?\n)? means an optional new-line character.
. means a wildcard.
.*? means 0 or more wildcards (*? as opposed to just * means non-greedy matching, but this probably doesn't mean much to you).
, means, well, ..., a comma.

Reference.

split for file or single string:

String line = "1.2223232323232323,74.00";
String value = line.split(",")[1];

split for one giant string (also needs regex) (but I'd prefer Scanner, it doesn't need all that memory):

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

Upvotes: 2

Lukas Eichler
Lukas Eichler

Reputation: 5913

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

Upvotes: 0

hsz
hsz

Reputation: 152304

Just try with:

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

Upvotes: 0

Related Questions