java中字符串到数组的转换

java中字符串到数组的转换,java,Java,下面是我的Java代码。我正在传递一个CSV文件并读取记录。我想按“,”分割记录并将其存储到数组中。我不知道怎么做。如果有人能告诉我。我对Java相当陌生 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class parser { public static void main(String[] args

下面是我的Java代码。我正在传递一个CSV文件并读取记录。我想按“,”分割记录并将其存储到数组中。我不知道怎么做。如果有人能告诉我。我对Java相当陌生

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class parser 
{
    public static void main(String[] args) throws IOException 
    {
        FileReader fileReader = new FileReader(new File("//Users//Desktop//npi.csv"));
        BufferedReader br = new BufferedReader(fileReader);
        String line = null;
        //String[] value = line.split(",");

        /*ArrayList list = new ArrayList(Arrays.asList(line));
        System.out.println(list);*/
        int count = 0;
        while((line = br.readLine()) != null)
        {
            for(int i=0; i < line.length();i++)
            {

            }
            count ++;
            System.out.println("Record Count : "+count);
            System.out.println(line);
        }

    }
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
公共类解析器
{
公共静态void main(字符串[]args)引发IOException
{
FileReader FileReader=newFileReader(新文件(“//Users//Desktop//npi.csv”);
BufferedReader br=新的BufferedReader(文件读取器);
字符串行=null;
//String[]value=line.split(“,”);
/*ArrayList list=新的ArrayList(Arrays.asList(line));
系统输出打印项次(列表)*/
整数计数=0;
而((line=br.readLine())!=null)
{
对于(int i=0;i
CSV文件中的字符串示例

“1234567”、“1”、“1”、“阿里”、“唐纳森”、“博士”、“O.D.、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 A、埃文斯维尔、IN、8418996408、美国、6013857469、9586771232、西特路140-6002、套房 “美国”“6955551228”“240383884 68”、“2003年10 13/2003年10月21/2018,”2018年12月21/21/2018,”,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,944,"03,"IN,",,“

使用“,”作为分隔符拆分每行,如下所示:

String[] records = line.split(",");

首先定义一个列表,在其中存储所有单词:

List List=new ArrayList()

while
循环中,不需要
for
循环。摆脱它,改用以下方法:

//Remove quotes. I think you wouldn't need them.
line = line.replace("\"", "");
//Now get the words which are separated by a comma
String[] words = line.split(",");
//Now add all the words to the main list
Collections.addAll(list, words);

您已经使用了
Arrays.asList(line)
,但是您应该
Arrays.asList(value)
。还将注释代码放置在
while
循环中

List
是一个接口,
ArrayList
是一个实现。使用数据不需要对象的实例类型。只需使用一个接口。您还应该知道,编写接口代码是Java中的最佳实践,也是OOP的基本原则之一


对于单行,它需要
列表
,要保留这些行,您应该使用另一个列表
列表
。您可以逐行实例化列表并向其中添加列表。

在您的代码中是一个错误:您试图拆分的字符串为
null
。将其移动到while循环中,
引用实际的字符串对象

您希望在“
”、“
”处拆分字符串,但如果它是第一个或最后一个字符,我猜您也希望删除“

这可以使用
String.split(String regex)
完成:

此正则表达式匹配字符串开头/结尾的
”、“
。如果输入以引号开头,则结果数组以空字符串开头

请注意,使用

System.out.println( Arrays.toString(myArray) );

注释掉的代码中可能有一些好东西……我们已经编辑了您的数据,用随机生成的信息替换了真实姓名、电话号码、地址以及我只能假设的其他真实数据。请不要使用真实人物的数据。这根本不是提问者想要的。他希望字符串在每次出现
,“
时都被拆分。但是,您正在删除引号,然后在
处拆分,这可能会产生不同的结果。除此之外,将数组复制到集合中是多余的。@Aloso,不,我认为OP在那里打错了。我读过那份声明。但他为什么要在这个基础上分裂这根绳子,这是毫无道理的。
System.out.println( Arrays.toString(myArray) );