-2

正規表現がありますが、Java での使用方法がわかりません。これは Java コードです。

String inputString = "he is in cairo on 20-2-20 12  and he will be here on JANUARY 20 2013  the expected time to arrived is 100: 00 ";
String pattern = " ";
Pattern pt = Pattern.compile(pattern);
Matcher m = pt.matcher(inputString);
String resultString=null;
if(m.find()) {
    resultString = m.replaceAll(" ");
}
System.out.println(resultString);

要件は次のとおりです。

  1. 単一のスペースで置き換えられたスペースを削除します。
  2. このようなデータ形式dd-mm-yyyy
  3. 数字の間にスペースがある場合は、数字の間だけを削除してください。
  4. JANUARY という月は、おそらく次の形式で表されます: JAN.

予想される出力は次のとおりです。

he is in cairo on 20-2-2012  and he will be here on 20-01-2013  the expected time to arrived is 100:00 

私はこれを使用しました:

Matcher m = Pattern.compile("(\\d+)-(\\d+)?\\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)").matcher(inputString);
String resultString=null;
String temp_str=null;
while (m.find()) {
    if (m.groupCount()==3) {
        int first = Integer.valueOf(m.group(1));
        int second = Integer.valueOf(m.group(2));
        String month = m.group(3);
        System.out.println("three parts");
        temp_str=m.replaceAll("\\1-\\2-\\3");
        System.out.println(temp_str);
    } else {
        int first = Integer.valueOf(m.group(1));
        String month = m.group(2);
        System.out.println("two parts");
       temp_str=m.replaceAll("\\1-\\2-\\3");
    }
}
4

1 に答える 1

0

次のように解決策を見つけました。

Matcher m = Pattern.compile("([0-9]{1,2}) ([0-9]{1,2}) ([0-9]{4})").matcher(inputString);
String resultString = null;
String temp_str = null;
while (m.find()) {
    if (m.groupCount() == 3) {
        int first = Integer.valueOf(m.group(1));
        int second = Integer.valueOf(m.group(2));
        String month = m.group(3);
        System.out.println("three parts" + month);
        if (month.matches("Jan"))
        {
            System.out.println("three parts wael");
            temp_str = m.replaceAll(first + "-" + second + "-" + "JANUARY");
        }
        System.out.println(temp_str);
    } 
    else {
        int first = Integer.valueOf(m.group(1));
        String month = m.group(2);
        System.out.println("two parts");
        temp_str = m.replaceAll("\\1-\\2-\\3");
    }
}
于 2013-01-07T07:29:02.700 に答える