提取子串从字符串

问题描述:

我有以下字符串:提取子串从字符串

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) { 
    .... 
} 
+0

你尝试了什么?您是否搜索[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

+0

'String []'应该怎么样?请提供样本输出。类似于“{”mac1“,”00:11:22:33:44:55“,...}或”{“mac1”,“mac2”,...}或“{”00:11 :22:33:44:55“,”66:77:88:99:00:11“,...}或者...... –

如果你想再拆新行我想这应该这样做

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); 
    }