1

vsscanf()JavaのCに相当するものが必要です。より詳細に、私はここにこれを持っています:

private void parseString(String parseMe, String format, Object[] args) {
    // something like: vsscanf(parseMe, format, args);
}

sscanf()に相当するものについて実際に読んだので、そこから簡単に実行できることに注意してください。しかし、引数をforループで埋めるよりも洗練された解決策があるかどうかを自問します。

また、ソリューションで配列の代わりにvarargsを使用できると便利です。下記参照。

parseString(str, format, x, y, z);
4

1 に答える 1

3

を使用できますjava.text.MessageFormat。例えば:

public static void main(String[] args) throws ParseException {
    String input="hello 1:2.3.4";
    MessageFormat form = new MessageFormat("{0} {1,number}:{2,number,integer}.{3,number}");
    Object[] data = form.parse(input);
    for(Object o : data) {
        System.out.println(o.getClass()+" : "+o.toString());
    }
}

これは出力を生成します:

class java.lang.String : hello
class java.lang.Long : 1
class java.lang.Long : 2
class java.lang.Double : 3.4

もちろん、このフォーマットは、で使用されているものほどコンパクトではありませんがscanf、Javaの箱から出してすぐに使用できます。

于 2013-01-04T00:55:01.033 に答える