读书人

关于java字符串截取有关问题

发布时间: 2013-08-25 10:49:56 作者: rapoo

关于java字符串截取问题
String 1 = 3 "Hold Gear" 2 "Min Gear Request" 1 "Max Gear Request" 0 "No Action" ;
String 2 = 7 "Driver Disabled" 6 "Enhanced Operation" 5 "Calibrating" 4 "Warming Up" 3 "Permanently Failed" 2 "Temporarily Inhibited" 1 "Reduced Function" 0 "Normal Operation" ;

求一个方法。能够将1 截取为
{3 "Hold Gear",2 "Min Gear Request",1 "Max Gear Request",0 "No Action"}
的数组
同时可以将2 截取为
{ 7 "Driver Disabled", 6 "Enhanced Operation",5 "Calibrating" ,4 "Warming Up", 3 "Permanently Failed", 2 "Temporarily Inhibited" ,1 "Reduced Function" 0 "Normal Operation"}
的数组
也就是说后面字符串长度不定, 能不能通过一个算法实现。要是能用正则表达式就更好了 Java String 算法 正则表达式 函数
[解决办法]
regex=".*?(\\d{1} \\"\\w+\\")";
差不多正则就是这样,
[解决办法]
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestReg {

public static void main(String[] args) {
String str1 = "3\"Hold Gear\"2\"Min Gear Request\"1\"Max Gear Request\"0\"No Action\"" ;
//String 2 = 7 "Driver Disabled" 6 "Enhanced Operation" 5 "Calibrating" 4 "Warming Up" 3 "Permanently Failed" 2 "Temporarily Inhibited" 1 "Reduced Function" 0 "Normal Operation" ;

//System.out.println(Arrays.toString(str1.split("^\\d(\\w+)$")));
Matcher m = Pattern.compile("(\\d)([(a-zA-Z)(\\\")\\s])+").matcher(str1);
while(m.find()){
System.out.print(m.group()+" ");
}
}
}



结果:3"Hold Gear" 2"Min Gear Request" 1"Max Gear Request" 0"No Action"

读书人网 >J2SE开发

热点推荐