0

価格から値を抽出する Java の正規表現が必要です。たとえば、$40,250.99 式で 40250.99 を出力したいと思います。重要なことは、正規表現のみで行う必要があるということです。文字列の連結やその他の文字列関連の操作を行うことはできません。私は次のことを試しましたが、「、」はすべてを台無しにします。基本的に $503.34 は 503.34 になりますが、$40,250.99 は 40 になります

String extractionPattern = "[\\$](\\d+(?:\\.\\d{1,2})?)";
String val = "    Executive billings @ $40,250.99 Starting 2013-01-05 with bi weekly";
Pattern  p = Pattern.compile(extractionPattern);
Matcher m = p.matcher(val);
if (m.find())
     System.out.println("Found a match:" + m.group(1));
4

1 に答える 1

0

おそらくこれを行うためのより良い方法があり、私の正規表現がかなり基本的であることを最初に認めます...

String regExp = "\\$[0-9,\\.]+";
String value = "Executive billings @ $40,250.99 Starting 2013-01-05 with bi weekly";

Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(value);

// This should result in a list with 1 element of "$40,250.99"
List<String> lstMatches = new ArrayList<String>(5);
while (matcher.find()) {
    lstMatches.add(matcher.group());
}

for (String match : lstMatches) {
    // Strip off the unrqeuired elements...
    match = match.replaceAll("\\$", "");
    match = match.replaceAll(",", "");
    System.out.println(Double.parseDouble(match));
}

NumberFormat.getCurrencyInstance().parse(match)を使用して結果を解析して に戻すことさえできるかもしれませんがdouble、これは入力がローカルの要件に一致することを前提としています...

于 2013-09-04T01:24:16.047 に答える