があり、これをとString a="abcd1234"
に分割したい。この分割コードは、などのすべての入力の王様に適用する必要があります。この種の文字列を分割する方法。出来ますか?String b="abcd"
Int c=1234
ab123456
acff432
質問する
78578 次
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
次のことができます。
- 次のような正規表現で分割
split("(?=\\d)(?<!\\d)")
- それを含む文字列の配列があり、それを解析するだけです。
于 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);
}
于 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 に答える