Java 从数字字符中拆分起始字母字符
我想拆分一个字符串,这样我就可以开始按字母顺序排列的字符串(直到出现第一个数字)。和另一个字母数字字符串 例如: 我有一个字符串示例:Nesc123abc456 我想通过拆分上面的字符串得到以下两个字符串:Nesc,123abc456 我尝试过的:Java 从数字字符中拆分起始字母字符,java,regex,string,split,Java,Regex,String,Split,我想拆分一个字符串,这样我就可以开始按字母顺序排列的字符串(直到出现第一个数字)。和另一个字母数字字符串 例如: 我有一个字符串示例:Nesc123abc456 我想通过拆分上面的字符串得到以下两个字符串:Nesc,123abc456 我尝试过的: String s = "Abc1234avc"; String[] ss = s.split("(\\D)", 2); System.out.println(Arrays.toString(ss)); 但这只是从字符串中删
String s = "Abc1234avc";
String[] ss = s.split("(\\D)", 2);
System.out.println(Arrays.toString(ss));
但这只是从字符串中删除第一个字母。您没有尝试
replaceAll
String s = ...;
String firstPart = s.replaceAll("[0-9].*", "");
String secondPart = s.substring(firstPart.length());
您没有尝试过
replaceAll
String s = ...;
String firstPart = s.replaceAll("[0-9].*", "");
String secondPart = s.substring(firstPart.length());
你需要量词 试一试
此处的更多信息:您需要量词 试一试
此处的更多信息:您可以使用lookarounds,这样您就不会使用定界部分:
String s = "Abc1234avc";
String[] ss = s.split("(?<=\\D)(?=\\d)", 2);
System.out.println(Arrays.toString(ss));
String s=“Abc1234avc”;
String[]ss=s.split((?您可以使用lookarounds,这样您就不会使用定界部分:
String s = "Abc1234avc";
String[] ss = s.split("(?<=\\D)(?=\\d)", 2);
System.out.println(Arrays.toString(ss));
String s=“Abc1234avc”;
String[]ss=s.split((?您可以使用:
String[] arr = "Nesc123abc456".split("(?<=[a-zA-Z])(?![a-zA-Z])", 2);
//=> [Nesc, 123abc456]
String[]arr=“Nesc123abc456”.split((?您可以使用:
String[] arr = "Nesc123abc456".split("(?<=[a-zA-Z])(?![a-zA-Z])", 2);
//=> [Nesc, 123abc456]
String[]arr=“Nesc123abc456”。拆分((?split)是一个破坏性的过程,因此您需要找到第一个数字的索引并使用子字符串来获得结果。这也可能比使用正则表达式更快,因为它们后面有更多的试探法
int split = string.length();
for(int i = 0; i < string.length(); i ++) {
if (Character.isDigit(string.charAt(i)) {
split = i;
break;
}
}
String[] parts = new String[2];
parts[0] = string.substring(0, split);
parts[1] = string.substring(split);
int split=string.length();
对于(int i=0;i
拆分是一个破坏性的过程,因此您需要找到第一个数字的索引并使用子字符串来获得结果。这也可能比使用正则表达式更快,因为它们背后有更多的启发
int split = string.length();
for(int i = 0; i < string.length(); i ++) {
if (Character.isDigit(string.charAt(i)) {
split = i;
break;
}
}
String[] parts = new String[2];
parts[0] = string.substring(0, split);
parts[1] = string.substring(split);
int split=string.length();
对于(int i=0;i
我想这就是你问的问题:
String s = "Abc1234avc";
String numbers = "";
String chars = "";
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(Character.isDigit(c)){
numbers += c + "";
}
else {
chars += c + "";
}
}
System.out.println("Numbers: " + numbers + "; Chars: " + chars);
String s=“Abc1234avc”;
字符串编号=”;
字符串字符=”;
对于(int i=0;i
我想这就是你问的问题:
String s = "Abc1234avc";
String numbers = "";
String chars = "";
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(Character.isDigit(c)){
numbers += c + "";
}
else {
chars += c + "";
}
}
System.out.println("Numbers: " + numbers + "; Chars: " + chars);
String s=“Abc1234avc”;
字符串编号=”;
字符串字符=”;
对于(int i=0;i
OP希望拆分字符串
而不更改。它不会更改,因为字符串是不可变的。replaceAll
返回新字符串抱歉…corr:OP希望拆分字符串的两部分。OP希望拆分字符串而不更改。它不会更改,因为字符串是不可变的。replaceAll
返回新字符串gSorry…corr:OP需要字符串的两个部分。你说的“破坏性”过程是什么意思?当你按某个对象拆分时,它不包括在结果数组中。你说的“破坏性”是什么意思进程?当按某个对象拆分时,它不包括在结果数组中。量词在这里有什么帮助?这将仅从字符串中删除所有前导非数字。量词在这里有什么帮助?这将仅从字符串中删除所有前导非数字。