-1

私は次の文字列を持っています:

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

6 に答える 6

2

正規表現を使用できます:

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()]);
}
于 2012-09-07T08:42:05.427 に答える
1

あなたが新しい行を分割したいなら、私はこれがそれをするべきだと思います

public String[] getvaluesIntoStringArray(String str) {
    return str.split("\\r?\\n");
}
于 2012-09-07T08:31:00.607 に答える
0

(?<=:\s)(.+$) 正規表現エンジンがルックビハインドをサポートしていない場合は、この正規表現を使用してください。この正規表現の(:\s)(.+$)一致はグループ2になります。

ps:regexoptionでregexを使用するMultyLine

于 2012-09-07T08:29:36.710 に答える
0
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

于 2012-09-07T08:30:55.240 に答える
0

してみてください

String[] result = str.split("\n");    
于 2012-09-07T08:36:54.273 に答える
0

ここにコード:

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);
    }
于 2012-09-07T08:49:16.407 に答える