我正在尝试将字符串拆分为不同的变量。与String.format()
相反的东西。我想要一个特定的正则表达式匹配,然后应该将该部分字符串分配给特定变量。可以使用StringReader
或任何其他类吗?
示例我的字符串是5 13-DEC-2010 16:47 A Tach 220 380
现在它应该分配给变量,如:
number = 5
date = 13-DEC-2010
time = 16:47
type = A Tach
num1 = 220
num2 = 380
其中所有变量都可以是字符串
答案 0 :(得分: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);
答案 1 :(得分:0)
根据我过去的经验,没有任何内置类可以做到这一点。只需手动操作您的数据。像拆分它(str.split(“\ s”);),然后存储在它们各自的变量中。但问题是“A Tach”。
如果你问我,我只是用你的字符串中不会出现的正则表达式替换数据分隔符(在你的情况下是一个空格),类似于“; =;”你的字符串将被转换为 “5; =; 13-DEC-2010; =; 16:47; =; A Tach; =; 220; =; 380” 然后只需拆分数据并将其解析为各自的变量。
答案 2 :(得分: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);
}