13

があり、これをとString a="abcd1234"に分割したい。この分割コードは、などのすべての入力の王様に適用する必要があります。この種の文字列を分割する方法。出来ますか?String b="abcd"Int c=1234ab123456acff432

4

9 に答える 9

27

のような正規表現で分割してみることができます(?<=\D)(?=\d)。これを試してください:

String str = "abcd1234";
String[] part = str.split("(?<=\\D)(?=\\d)");
System.out.println(part[0]);
System.out.println(part[1]);

出力します

abcd
1234

を使用して数字文字列を整数に解析できますInteger.parseInt(part[1])

于 2013-05-28T08:23:14.153 に答える
3

次のことができます。

  1. 次のような正規表現で分割split("(?=\\d)(?<!\\d)")
  2. それを含む文字列の配列があり、それを解析するだけです。
于 2013-05-28T08:25:37.753 に答える
3

正規表現を使用します。

Pattern p = Pattern.compile("([a-z]+)([0-9]+)");
Matcher m = p.matcher(string);
if (!m.find())
{ 
  // handle bad string
}
String s = m.group(1);
int i = Integer.parseInt(m.group(2));

私はこれをコンパイルしていませんが、アイデアを得る必要があります。

于 2013-05-28T08:25:10.100 に答える
0

ブルートフォースソリューション。

String a = "abcd1234";
int i;
for(i = 0; i < a.length(); i++){
    char c = a.charAt(i);
    if( '0' <= c && c <= '9' )
        break;
}
String alphaPart = a.substring(0, i);
String numberPart = a.substring(i);
于 2013-05-28T08:24:18.207 に答える
0

記号の各グループにいくつかの区切り文字を追加してから、それらの区切り文字で文字列を分割できます。

public static void main(String[] args) {
    String[][] arr = {
            split("abcd1234", "\u2980"),
            split("ab123456", "\u2980"),
            split("acff432", "\u2980")};

    Arrays.stream(arr)
            .map(Arrays::toString)
            .forEach(System.out::println);
    // [abcd, 1234]
    // [ab, 123456]
    // [acff, 432]
}
private static String[] split(String str, String delimiter) {
    return str
            // add delimiter characters
            // to non-empty sequences
            // of numeric characters
            // and non-numeric characters
            .replaceAll("(\\d+|\\D+)", "$1" + delimiter)
            // split the string around
            // delimiter characters
            .split(delimiter, 0);
}

参照:部分文字列を int としてキャストできる場合、区切られた文字列を分割する方法は?

于 2020-12-23T07:06:44.770 に答える
-1

正規表現"[^A-Z0-9]+|(?<=[AZ])(?=[0-9])|(?<=[0-9])(?=[AZ])"を使用して、文字列をアルファベットと数字で分割します。

例えば

String str = "ABC123DEF456";

次に、この正規表現を使用した出力は次のようになります。

ABC
123
DEF
456

于 2017-07-20T18:33:54.920 に答える
-1
public static void main(String... s) throws Exception {
        Pattern VALID_PATTERN = Pattern.compile("([A-Za-z])+|[0-9]*");
    List<String> chunks = new ArrayList<String>();
    Matcher matcher = VALID_PATTERN.matcher("ab1458");
    while (matcher.find()) {
        chunks.add( matcher.group() );
    }
}
于 2013-05-28T08:30:10.460 に答える