【发布时间】:2018-01-03 19:21:16
【问题描述】:
我正在尝试在 Android 应用程序中将字符串拆分为某些字符。字符为井号、逗号、分号、制表符、回车、组分隔符、单位分隔符和记录分隔符。
这是我进行拆分的方式:
private ArrayList<String> splitdata(String data, String delimiter){
ArrayList<String> fields = new ArrayList<>();
int i = 0; int previous = 0; int index = 0;
boolean first = true;
while (i != -1) {
i = data.indexOf(delimiter,i);
if(i != -1){
if (first) {
fields.add(data.substring(0, i));
first = false;
} else {
fields.add(data.substring(previous + delimiter.length(), i));
}
Log.d(SCANNED_INTENT_TAG,"Newly found field: " + fields.get(index));
index++;
previous = i;
i += delimiter.length();
}
}
if (previous < (data.length()-1) && !first) {
fields.add(data.substring(previous+1));
Log.d(SCANNED_INTENT_TAG,"Newly found field: " + fields.get(index));
}
return fields;
}
这适用于我可以从键盘输入的可见字符,例如井号、逗号和分号。但是,我无法检测到特殊字符选项卡、回车、组分隔符、单位分隔符或记录分隔符。我是这样传递它们的:
some_arraylist = splitdata(some_str,"\t");
some_arraylist = splitdata(some_str,"\r");
some_arraylist = splitdata(some_str,Character.toString((char) 31));
some_arraylist = splitdata(some_str,Character.toString((char) 29));
some_arraylist = splitdata(some_str,Character.toString((char) 28));
我应该以什么形式传递它们?
【问题讨论】:
-
为什么不直接使用 String.split 或者我错过了什么?
标签: java android string string-comparison