可能重复:
Can you recommend a Java library for reading (and possibly writing) CSV files?
我需要在Java中拆分String。分隔符是空格字符。 字符串可能包括成对的引号(内部有一些文本和空格) - 配对引号内的整个主体应被视为单个标记。 例如:
Input: token1 "token 2" token3 Output: array of 3 elements: token1 token 2 token3
怎么做? 谢谢!
答案 0 :(得分:1)
拆分两次。首先是引号,然后是空格。
答案 1 :(得分:0)
假设其他解决方案对您不起作用,因为它们没有正确检测匹配的引号或忽略引用文本中的空格,请尝试以下操作:
private void addTokens(String tokenString, List<String> result) {
String[] tokens = tokenString.split("[\\r\\n\\t ]+");
for (String token : tokens) {
result.add(token);
}
}
List<String> result = new ArrayList<String>();
while (input.contains("\"")) {
String prefixTokens = input.substring(0, input.indexOf("\""));
input = input.substring(input.indexOf("\"") + 1);
String literalToken = input.substring(0, input.indexOf("\""));
input.substring(input.indexOf("\"") + 1);
addTokens(prefixTokens, result);
result.add(literalToken);
}
addTokens(input, result);
请注意,这不会处理不平衡报价,转义报价或其他错误/格式错误输入的情况。
答案 2 :(得分:0)
import java.util.StringTokenizer;
class STDemo {
static String in = "token1;token2;token3"
public static void main(String args[]) {
StringTokenizer st = new StringTokenizer(in, ";");
while(st.hasMoreTokens()) {
String val = st.nextToken();
System.out.println(val);
}
}
}
这是字符串标记化的简便方法