求算法分割字符串为数组将字符串分割为三个元素的数组,如  Abc2.13张三      分割成  Abc           2.13          张三Abc张三             分割成  ABC张三      “”          “”张三23李四1.5       分割成  张三23李四   1.5           “” 以此,我的需求是对类似的东西进行拖拽,增加最后面的数组,如果没有数字表示从零开始。如果中间有数字,从最后的数字开始递增货递减,所以有上面的需求。算法

解决方案 »

  1.   

    从最后边往前找,如果最后边的字符能够作为数字就分割成两部分,前边一部分,后边的数字一部分。
    如果最后边的字符不是数字,则继续往前找,如果前面找到数字,则分为三部分,最前的数字之前的,然后就是中间的数字,最后是数字之后的 字符如果字符里没有数字,则直接作为一个部分,不需要处理。注意数字也需要支持小数的数字。
    例如分割实例效果如下分割的字符      分割后的效果     
    23Def         空格         23 def
    Ab23cde         Ab         23 cde
    Abcde         Abcde
    Abc23deff223gh Abc23deff 223 gh
    Ab23         Ab         23
      

  2.   

    楼主 给你说下我的思路 ,将字符串查找,先判断如果找到数字,在数字前、后都加上逗号或其他,然后用splite分组,没找到就单独一组了。
      

  3.   

    public class Split { /**
     * 测试用例
     */
    public static void main(String[] args) {
    final String message = "Abc2.13张三";
    String [] result = split(message);
    for(String sub :result){
    System.out.println(sub);
    }
    } private static final String DIGITs = "1234567890.";
    public static String[] split(String message) {
    if(message==null)return null;
    char[] msg = message.toCharArray();
    int endIndex = msg.length;
    for(;endIndex>0 && DIGITs.indexOf(msg[endIndex-1])<0;endIndex--);
    int beginIndex = endIndex;
    for(;beginIndex>0 && DIGITs.indexOf(msg[beginIndex-1])>=0;beginIndex--);
    if(beginIndex==endIndex)return new String[]{message};
    if(endIndex==msg.length)return new String[]{message.substring(0,beginIndex),message.substring(beginIndex,endIndex)};
    return new String[]{message.substring(0,beginIndex),message.substring(beginIndex,endIndex),message.substring(endIndex)};
    }}
      

  4.   


    public static void main(String...args) throws Exception{
        String s="张三23李四1.5王五";
        int sep1=-1,sep2=-1;
        for(int i=s.length()-1;i>=0;i--){
          char c=s.charAt(i);
          if('0'<=c&&c<='9'){
            if(sep2<0) sep2=i+1;
          }else if(c=='.') ;
          else if(sep2>0){
            sep1=i+1;
            break;
          }
        }
        String s1=sep1>0?s.substring(0,sep1):s;
        String s2=sep1>0?s.substring(sep1,sep2):"";
        String s3=sep2>0?s.substring(sep2):"";
        System.out.println(s1+" , "+s2+" , "+s3);
      }