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

试试这个:

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 回答
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 回答