我有以下代码:
BufferedReader metaRead = new BufferedReader(new FileReader(metaFile));
String metaLine = "";
String [] metaData = new String [100000];
while ((metaLine = metaRead.readLine()) != null){
metaData = metaLine.split(",");
for (int i = 0; i < metaData.length; i++)
System.out.println(metaData[0]);
}
这就是文件中的内容:
testTable2 Name java.lang.Integer TRUE test
testTable2 age java.lang.String FALSE test
testTable2 ID java.lang.Integer FALSE test
我希望数组位于metaData[0]
testTable2
,metaData[1]
为Name
,但当我在0
运行时,我得{{1}在} testtable2testtable2testtable2
我会得到1
和NameageID
。
为了获得我想要的结果,有什么想法要做什么?
答案 0 :(得分:3)
只需打印#include <iostream>
#include <string>
using namespace std;
bool isA_Vowel(string s);
string remov(string s);
int main()
{
string s;
string ans = "y";
while((ans == "Y") || (ans == "y"))
{
cout << "Please enter a word or a series of letters: ";
cin >> s;
cout << "Old: " << s << endl;
cout << "New: " << remov(s) << endl;
cout << "Would you like to go again? <y/n> ";
cin >> ans;
}
}
bool isA_Vowel (string s)
{
if (s == "a" || s == "e"|| s == "i" || s == "o" || s == "u" || s == "A"
|| s == "E" || s == "I" || s == "O" || s == "U")
{
return (true);
}
else
{
return (false);
}
}
string remov(string s)
{
for (unsigned int i = 0; i < s.length(); ++i)
{
if (isA_Vowel(s))
{
s.erase(i,1);
}
}
return(s);
}
而不是metaData[i]
,然后将每个字符串拆分为metaData[0]
(即“1个或多个空格”):
"[ ]+"
结果,您将获得以下数组:
metaData = metaLine.split("[ ]+");
前面输出的代码片段结果为:
[testTable2, Name, java.lang.Integer, TRUE, test]
[testTable2, age, java.lang.String, FALSE, test]
[testTable2, ID, java.lang.Integer, FALSE, test]
此外,我已经使用Java 8和Stream API编写了您的任务:
while ((metaLine = metaRead.readLine()) != null) {
metaData = metaLine.split("[ ]+");
for (int i = 0; i < metaData.length; i++)
System.out.print(metaData[i] + " ");
System.out.println();
}
最后,有最直接的方式:
List<String> collect = metaRead
.lines()
.flatMap(line -> Arrays.stream(line.split("[ ]+")))
.collect(Collectors.toList());
答案 1 :(得分:0)
在for循环内的行后面修改你的代码,
System.out.println(metaData[0]);
作为
System.out.println(metaData[i]);
答案 2 :(得分:0)
虽然我的回答可能不完全适合您的问题。但正如我所看到的,您的文件格式是TSV或CSV。 您可以考虑使用 OpenCSV 为了你的问题。
图书馆将为您处理阅读,分割过程。