我有String a="abcd1234"and 我想把它分成String b="abcd"and 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        
        
		
使用正则表达式:
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   回答
    
    
            3        
        
		
您可以执行以下操作:
- 用正则表达式拆分
split("(?=\\d)(?<!\\d)") - 你有一个字符串数组,你只需要解析它。
 
于 2013-05-28T08:25:37.753   回答
    
    
            1        
        
		
String st = "abcd1234";
String st1=st.replaceAll("[^A-Za-z]", "");
String st2=st.replaceAll("[^0-9]", "");
System.out.println("String b = "+st1);
System.out.println("Int c = "+st2);
输出
String b = abcd
Int c = 1234
    于 2019-12-19T14:47:32.510   回答
    
    
            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   回答
    
    
            0        
        
		
试试这个:
String input_string = "asdf1234";
String string_output=input_string.replaceAll("[^A-Za-z]", "");
int number_output=Integer.parseInt(input_string.replaceAll("[^0-9]", ""));
System.out.println("string_output = "+string_output);
System.out.println("number_output = "+number_output);
    于 2020-12-23T11:40:21.823   回答
    
    
            -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   回答
    
    
            -1        
        
		
使用正则表达式“[^A-Z0-9]+|(?<=[AZ])(?=[0-9])|(?<=[0-9])(?=[AZ]) ”用字母和数字分割刺痛。
例如
String str = "ABC123DEF456";
然后使用此正则表达式的输出将是:
ABC
123
定义
456
于 2017-07-20T18:33:54.920   回答