-1

これらの変換を行うことができるJavaの正規表現はどれですか?

"1.54.0.21" to "01540021"

また

"33.5.10.6" to "33051006"

.#とを置き換える必要があり0#ます.####

4

4 に答える 4

2

次のようなものを試すことができます...

StringBuilder output = new StringBuilder(8);
String input = "1.54.0.21";
Pattern p = Pattern.compile("\\d+");
Matcher matcher = p.matcher(input);
while (matcher.find()) {
    String group = matcher.group();
    if (group.length() < 2) {
        output.append("0");
    }
    output.append(group);
}

System.out.println(input);
System.out.println(output);

どの出力...

1.54.0.21
01540021
于 2013-09-23T08:05:23.367 に答える
1

正規表現なし:

http://rextester.com/LGXETU62790

public static void main(String args[])
{
    String str1 = "33.5.9.6";
    String str2 = "1.54.0.21";
    System.out.println(transform(str1));
    System.out.println(transform(str2));
}

private static String transform(String str){
    String[] splitted = str.split("\\.");
    StringBuilder build = new StringBuilder();
    for(String s : splitted){
        build.append(String.format("%02d", Integer.parseInt(s)));
    }
    return build.toString();
}
于 2013-09-23T08:14:14.880 に答える
0
public String getToken(String elem) {
    return (elem.size() == 1) ? ("0" + elem) : elem;
}

String[] a = "1.54.0.21".split("\\.");
String o = "", e;
int i = 0, len = a.size();
for (i = 0; i < len; i++) {
    o = o + getToken(a[i]);
}
System.out.println(o);  //01540021
于 2013-09-23T07:58:53.633 に答える
0

正規表現の唯一の機能は、文字列 (または複数行の文字列) 内の文字の特定のパターンに一致することです。正規表現は、パターンの検索と置換で使用できますが、目的の文字列を検索するためだけに使用できます。文字列が見つかった場合は、Split()、Remove()、Replace() 関数を使用した方が目的を達成できます。

I recommend you : http://gskinner.com/RegExr/  

これは、文字列を正規表現で照合し、パターンを学習するためのオンライン ツールです。

于 2013-09-23T08:08:01.407 に答える