2012-04-03 2 views
-4

Я хотел бы знать, регулярное выражение для раскалывается десятичное число из строки говорятКак разделить десятичное число из строки в JAVA

str = "COD Amount = 333.98"

в приведенной выше значение строки мне просто нужно только десятичные значения, т.е. 333.98.

+1

Простые способы, кроме регулярного выражения. это обязательно? –

ответ

3

Обязательно использовать регулярное выражение? Если это не так, вы можете использовать:

public class Split { 
public static void main(String[] args) { 
    String line = "COD Amount = 333.98"; 
    String[] array = line.split("="); 
    double amount = Double.parseDouble(array[1]); 
    System.out.println(amount); 
} 
} 

Надеюсь, это поможет.

EDIT

С регулярным выражением:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

public class Split { 
public static void main(String[] args) { 
    String line = "COD Amount = 333.98"; 
    Pattern p = Pattern.compile(".+= (\\d+\\.\\d+)"); 
    Matcher m = p.matcher(line); 
    if (m.find()) { 
     System.out.println(m.group(1)); 
    } 
} 
} 

Но убедитесь, что все строки в том же формате: [код] [описание] = [число]

(I прежнему считают, что первое решение наиболее подходит)

EDIT 2

Поскольку ваш вход выглядит так: "COD Amount = 333.98, Coverage = $564.000" (вы должны предоставить нам весь формат ваших строк в исходном вопросе)

вы можете объединить два предыдущих решения:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

public class Split { 
public static void main(String[] args) { 
    String line = "COD Amount = 333.98, Coverage = $564.000"; 
    String[] array = line.split(","); 

    for (int i = 0; i < array.length; i++) { 
     Pattern p = Pattern.compile(".+= \\$?(\\d+\\.\\d+)"); 
     Matcher m = p.matcher(array[i]); 
     if (m.find()) { 
      System.out.println(m.group(1)); 
     } 
    } 
} 

}

+1

Вы проверяете строку перед @Sarathy? Причина, например: «COD A231.2mount = 333.98» приведет к неправильным результатам для большинства тривиальных регулярных выражений. Вот почему расщепления легче разбирать. –

+0

Да, я чувствую, что regex будет лучше для моего req, bcoz, вот как мои входные значения выглядят как Сумма наложенного платежа = 333,98, Coverage = $ 564,00 здесь мне нужно разделить строку на «,» и снова мне нужно разбить десятичную значение из уже разделенной строки. – Sarathee

+0

@sarathy, тогда вы ответили сами: сначала используйте split на всей строке, а затем используйте регулярное выражение (проверьте мой отредактированный ответ). –

Смежные вопросы