有这样一个字符串,由若干"&&","||"和其他字符串组成。例如:"a&&b&&c||d&&e||f"。现在需要把其中的"&&"和"||"按顺序抽取出来,放到一个数组里,则上述示例字符串的对应数组是:{"&&","&&","||","&&","||"}
  请问各位,有什么好的算法吗? private String[] getArray(String str){}
String[] arr =  getArray("a&&b&&c||d&&e||f");
        

解决方案 »

  1.   

    正则表达式
    Pattern, Matcher
      

  2.   

     String arr[] = str.split("\\|\\||&&");
     如果这样分割,得到的是恰恰相反的结果。您的意思是怎么的呢?
      

  3.   

    从前向后依次扫描 遇到&& ||就拆
      

  4.   


    public static void main(String[] args) {
    String s="a&&b&&c||d&&e||f";
    String[] ss=s.split("[A-Za-z0-9]");
    List list = new ArrayList();
    for(String sss:ss){
    if(!sss.equals("")){
    list.add(sss);
    }
    }
    System.out.println(list);
    }
      

  5.   

    你可以把split中那一串换成 \d 表式使用字母拆分 留下的就是符号了
      

  6.   


    String arr[] = str.split(""[A-Za-z]"");
      

  7.   

    String str = "a&&b&&c||d&&e||f";
            Matcher m = Pattern.compile("\\|\\||&&").matcher(str);
            List<String> arr = new ArrayList<String>();
            while (m.find()) {
                arr.add(m.group());
            }
      

  8.   

    public static void main(String[] args) {
    String s="a&&b&&c||d&&e||f哈哈";
    Matcher m = Pattern.compile("\\|\\||&&").matcher(s);
        List list = new ArrayList();
        while (m.find()) {
            list.add(m.group());
        }
        System.out.println(list);
    }不知道有没有其他的,比如|,&之类的