`
karlhell
  • 浏览: 105698 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

字符串截取,引号内容不截取算法。

阅读更多
String str = "a,b,c,\"$1,563\",\"$2,445\",d";
我要把这个字符串截取成
a
b
c
$1,563
$2,445
d


//过程式代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {
 public static void main(String[] args) throws Exception {
  String str = "a,b,c,\"$1,563\",\"$2,445\",d";

  List result = split(str);
  for (Iterator iter = result.iterator(); iter.hasNext();) {
   System.out.println(iter.next());
  }
 }

 public static List split(String str) throws Exception {
  List result = new ArrayList();

  if (str != null && str.length() > 0) {
   int start = 0;
   for (int i = 0; i < str.length(); i++) {
    char c = str.charAt(i);
    if (c == ',') {
     result.add(str.substring(start, i));
     if (str.charAt(i + 1) != '\"') {
      start = i + 1;
     } else {
      start = i + 2;
     }
    } else if (c == '\"') {
     int end = str.indexOf("\"", start);
     if (end == -1) {
      throw new Exception("引号不匹配!");
     } else {
      result.add(str.substring(start, end));
      if (end < str.length() && str.charAt(end + 2) != '\"') {
       start = end + 2;
      } else {
       start = end + 3;
      }
      i = end + 1;
     }
    }

    //加上末尾字符串
    if (i == str.length() - 1) {
     String string = str.substring(start, str.length());
     if (string.length() > 0) {
      result.add(string);
     }
    }
   }
  }

  return result;
 }
} 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics