DYNFLIGHT#A###2012/07/02 14:42:54#START#186###,以上字符串需要获取#号之间的内容,使用String的split方法不用分隔多个连续#号,请问有什么方法能分多个连续的#号,#号与#号之间没有值的时侯我希望能返回null。

解决方案 »

  1.   

    用indexof()方法和subString()方法配合使用应该可以,自己琢磨下
      

  2.   

    没读懂你是什么意思,
    "#号与#号之间没有值的时侯"split方法返回的是"",
    你直接替换成null不就行了,
    或者你是想要输出
    DYNFLIGHT,A,2012/07/02 14:42:54,START,186
    这样?String str = "DYNFLIGHT#A###2012/07/02 14:42:54#START#186###";
    String[] temp = str.split("#+");
    for(String s : temp){
    System.out.print(s + ",");
    }
      

  3.   

    我想输出:DYNFLIGHT,A,,,2012/07/02 14:42:54,START,186,,,。
    但split方法最后结尾部份的三个#当成一个#号处理了。  String str = "DYNFLIGHT#A###2012/07/02 14:42:54#START#186###"; 
     String[] temp = str.split("#"); 
     for(String s : temp){ 
     System.out.print(s + ","); 
     } 
    以上语句输出的是
    DYNFLIGHT,A,,,2012/07/02 14:42:54,START,186,
    最后三个#之间的两个""没有了。
      

  4.   

    你看能用不public static void main(String[] args) {
    String str = "DYNFLIGHT#A###2012/07/02 14:42:54#START#186###";
    Pattern pattern = Pattern.compile("#");
    Matcher matcher = pattern.matcher(str);
    List<String> list = new ArrayList<String>();
    int startIndex = 0;
    while(matcher.find()){
    int endIndex = matcher.start();
    //这里可以判断str.substring(startIndex, endIndex).length() == 0替换成null
    list.add(str.substring(startIndex, endIndex));
    startIndex = endIndex + 1;
    }
    for(String s : list){
    System.out.print(s +",");
    }
    }输出DYNFLIGHT,A,,,2012/07/02 14:42:54,START,186,,,
      

  5.   

    这个比 indexOf 和 subString 配合的好