提取子串从字符串
问题描述:
我有以下字符串:提取子串从字符串
mac1: 00:11:22:33:44:55
mac2: 66:77:88:99:00:11
model: PI-504
first_name: any_name
device_type: baseboard
serial_number: 668778542298745210
,我想所有的值提取到一个数组。如何用Java做到这一点?
public String[] getvaluesIntoStringArray(String str) {
....
}
答
如果你想再拆新行我想这应该这样做
public String[] getvaluesIntoStringArray(String str) {
return str.split("\\r?\\n");
}
答
使用这个表达式(?<=:\s)(.+$)
如果您正则表达式引擎不suppirt回顾后使用正则表达式(:\s)(.+$)
比赛将在第2组
PS:使用正则表达式与regexoption MultyLine
答
String str = "mac1: 00:11:22:33:44:55
mac2: 66:77:88:99:00:11
model: PI-504
first_name: any_name
device_type: baseboard
serial_number: 668778542298745210";
String[] tempArr = str.split("\n");
这tempArr应包含值为mac1:00:11:22:33:44:55,mac2:66:77:88:99:00:11,model:PI-504,first_name:any_name,device_type:baseboard,serial_number:668778542298745210
答
请尝试
String[] result = str.split("\n");
答
您可以使用regular expressions:
private static final Pattern PATTERN = Pattern.compile(".*?:(.*)");
public static String[] getvaluesIntoStringArray(String str) {
Matcher matcher = PATTERN.matcher(str);
List<String> values = new ArrayList<String>();
while (matcher.find())
values.add(matcher.group(1).trim());
return values.toArray(new String[values.size()]);
}
答
下面的代码:
public static void main(String[] args) {
List<String> result = new ArrayList<String>();
String str = "mac1: 00:11:22:33:44:55\n" +
"mac2: 66:77:88:99:00:11\n" +
"model: PI-504\n" +
"first_name: any_name\n" +
"device_type: baseboard\n" +
"serial_number: 668778542298745210";
Pattern pattern = Pattern.compile("^.*?:(.*)$", Pattern.MULTILINE);
Matcher matcher = pattern.matcher(str);
boolean find = matcher.find();
while(find) {
result.add(matcher.group(1));
find = matcher.find();
}
System.out.print(result);
}
你尝试了什么?您是否搜索[Java API](http://docs.oracle.com/javase/1.5.0/docs/api/index.html?java/lang/String.html)?或[Android API](http://developer.android.com/intl/es/reference/java/lang/String.html)? – Korcholis
'String []'应该怎么样?请提供样本输出。类似于“{”mac1“,”00:11:22:33:44:55“,...}或”{“mac1”,“mac2”,...}或“{”00:11 :22:33:44:55“,”66:77:88:99:00:11“,...}或者...... –