Java 分析包含双引号的字符串

Java 分析包含双引号的字符串,java,string,parsing,Java,String,Parsing,我有一个相对简单的java问题。我有一个字符串如下所示: "Anderson,T",CWS,SS 我需要用我所拥有的方式来解析它 Anderson,T CWS SS 都是单独的字符串 谢谢 假设您的字符串如下所示 String input=“\”安德森,T\”,CWS,SS” 您可以使用为类似场景找到的解决方案 String input = "\"Anderson,T\",CWS,SS"; List<String> result = new ArrayList&l

我有一个相对简单的java问题。我有一个字符串如下所示:

"Anderson,T",CWS,SS
我需要用我所拥有的方式来解析它

Anderson,T    
CWS    
SS
都是单独的字符串


谢谢

假设您的字符串如下所示

String input=“\”安德森,T\”,CWS,SS”

您可以使用为类似场景找到的解决方案

String input = "\"Anderson,T\",CWS,SS";
List<String> result = new ArrayList<String>();
int start = 0; //start index. Used to determine where the word starts
boolean inQuotes = false;

for (int current = 0; current < input.length(); current++) { //iterate through characters
    if (input.charAt(current) == '\"') //if found a quote
        inQuotes = !inQuotes; // toggle state
    if(current == (input.length() - 1))//if it is the last character
        result.add(input.substring(start)); //add last word
    else if (input.charAt(current) == ',' && !inQuotes) { //if found a comma not inside quotes
        result.add(input.substring(start, current)); //add everything between the start index and the current character. (add a word)
        start = current + 1; //update start index
    }
}
System.out.println(result);
String input=“\”安德森,T\”,CWS,SS”;
列表结果=新建ArrayList();
int start=0//开始索引。用于确定单词的起始位置
布尔inQuotes=false;
对于(int current=0;current

我对其进行了一些修改以提高可读性。此代码将所需字符串存储在列表中
结果

以下是一个解决方案,它将捕获带引号的字符串、删除空格并匹配空项:

publicstaticvoidmain(字符串[]args){

String quoted=“\”(.*)(?您正在尝试解析逗号分隔值(csv),csv通常使用引号。有一些库可以读取此格式。请阅读本教程:刚刚发现,如果行以
开头,则这并不总是有效-通过交换逗号前/后向逻辑进行修复