【问题标题】:Java Add Text in Tab Delimited From String Array To String VectorJava在从字符串数组到字符串向量的制表符中添加文本
【发布时间】:2014-12-10 05:30:41
【问题描述】:

我在将制表符分隔的文本格式化为 Vector 时遇到问题。您能否提供帮助以实现这一目标?

我的字符串数组 data 保存这些文本。

LastName    FirstName   Address City    State   Phone   
Berry   Rachel  240 Woodbridge Rd.  West Haven  CT  (203) 933- 5678
Dillon  John    29 Howe Ave.    Derby   CT  (203) 735- 4532
...................
...................
...................

我尝试使用另一个子 for 循环按选项卡拆分文本,然后添加到行字符串向量,但我遇到了系统内存不足错误。我还尝试使用 Vector 中的 addAll 属性,但它将第 1 行(Berry...)添加到第一个字段,将第 2 行添加到第二个字段等等。

这是我的代码,它没有按预期工作。

rowData = new Vector<Vector>();
row = new Vector<String>();

ReadFile filedata = new ReadFile(); 
data = filedata.OpenFile(); 

for(int i = 0; i <data.length; i++)
   {
       row.add(data[i].split("\\t").toString());                                                                       
   }

rowData.addElement(row);

如何格式化数据,以便按制表符将其拆分为不同的字段?作为参考,这是我需要它的手动方式。

Vector<String> rowOne = new Vector<String>();
rowOne.addElement("Berry");
rowOne.addElement("Rachel");
rowOne.addElement("240 Woodbridge Rd.");
rowOne.addElement("West Haven");
rowOne.addElement("CT");
rowOne.addElement("(203) 933- 5678");

Vector<String> rowTwo = new Vector<String>();
rowTwo.addElement("Dillon");
rowTwo.addElement("John");
rowTwo.addElement("29 Howe Ave.");
rowTwo.addElement("Derby");
rowTwo.addElement("CT");
rowTwo.addElement("(203) 735- 4532");

我希望我已经让自己足够清楚,任何意见将不胜感激。谢谢大家。


编辑:我能够用双 for 循环摆脱 OutOfMemoryError 但下面的代码用第一行填充我的向量 10 次,这是数组中的行数。

EDIT2:此循环返回 10 行,每行 54 个字段。这意味着数据数组中的所有文本都被拆分并插入到这 10 行中,因此所有这 10 行都有相同的数据集。这就是为什么我的表格被第一行填满了 10 次。

rowData = new Vector<Vector>();
        row = new Vector<String>();

        ReadFile filedata = new ReadFile(); 
        data = filedata.OpenFile();             

        for(int i = 1; i <data.length; i++)
        {
            lines = data[i].split("\t"); 
            for(int x = 0; x < lines.length; x++)
            {
                row.addAll(Arrays.asList(lines[x]));                    
            }                
            rowData.addElement(row);                                                                      
        }

【问题讨论】:

  • 我猜你第一次尝试第二个循环是个好方法,你有没有尝试摆脱 OutOfMemoryError ?你能把这段代码贴出来吗?
  • 睡个好觉后,我能够摆脱 OutOfMemoryError,但它用第一行填充了向量 10 次。请参阅我的问题中的编辑部分。感谢您的帮助。
  • 数据变量的类型是什么,你也可以发布data[i]的内容(任何索引)。
  • @nash_ag:data[i]的内容和我上面贴的一样,是String[]数组。
  • 我认为我的 for 循环是问题所在。因为我可以看到我的 rowData Vector 中有 10 行,每行有 54 个字段。这意味着数据数组中的整个文本已被制表符拆分并插入到 rowData 中。

标签: java arrays vector tabs delimited


【解决方案1】:

我更改了读取文件方法的结构并解决了问题。谢谢大家的意见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 2023-03-17
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多