0

文字列を異なる変数に分割しようとしています。の反対のようなものString.format()。特定の正規表現を一致させ、文字列のその部分を特定の変数に割り当てる必要があります。StringReaderまたは他のクラスを使用してそれは可能ですか?

私の文字列の例は、次の5 13-DEC-2010 16:47 A Tach 220 380 ような変数に割り当てる必要があります。

  1. number = 5
  2. date = 13-DEC-2010
  3. time = 16:47
  4. type = A Tach
  5. num1 = 220
  6. num2 = 380

すべての変数は文字列にすることができます

4

3 に答える 3

0
public static void main(String[] args) {
    String s = "5 13-DEC-2010 16:47 A Tach 220 380";
    String re = "(\\d+)\\s+(\\d{1,2}-[A-Z]{3}-\\d{4})\\s+(\\d{2}:\\d{2})\\s+([\\w\\s+]*)\\s+(\\d+)\\s+(\\d+)";
    Pattern p = Pattern.compile(re);
    String number=null,date=null,time=null,type=null,num1=null,num2=null;
    Matcher m = p.matcher(s);
    if (m.matches()) {
        number = m.group(1);
        date = m.group(2);
        time = m.group(3);
        type = m.group(4);
        num1 = m.group(5);
        num2 = m.group(6);
    }
    System.out.println(number);
    System.out.println(date);
    System.out.println(time);
    System.out.println(type);
    System.out.println(num1);
    System.out.println(num2);
}
于 2012-11-09T11:43:05.730 に答える
0

これを試して:

var s = '5 13-DEC-2010 16:47 A Tach 220 380';
var re = /(\d+)\s+(\d{1,2}-[A-Z]{3}-\d{4})\s+(\d{2}:\d{2})\s+([\w\s+]*)\s+(\d+)\s+(\d+)/
var m = s.match(re);
于 2012-11-09T11:20:04.983 に答える
0

私の過去の経験から、それを行う組み込みクラスはありませんでした。手動でデータを操作するだけです。それを分割するように(str.split( "\ s");)、それぞれの変数に保存します。しかし、問題は「A Tach」の場合です。

あなたが私に尋ねた場合、データセパレーター(あなたの場合はスペース)を、「;=;」のような文字列には現れない正規表現に置き換えます。ここで、文字列は "5;=;13-DEC-2010;=;16:47;=;A Tach;=;220;=;380" に変換されます。次に、データを分割して、それぞれの変数に解析します。

于 2012-11-09T11:27:34.097 に答える