Java将文本文件解析为数组
我的文本文件中有一个小数据库。看起来是这样的:Java将文本文件解析为数组,java,arrays,parsing,text,Java,Arrays,Parsing,Text,我的文本文件中有一个小数据库。看起来是这样的: abc def zed fgf qwe zxc ghj cvb ... for (String[] currLine : arrayList) { for (String currString : currLine) { System.out.print(currString + " "); } System.out.println(); } 我想将其转换为: Array1 =
abc def zed fgf
qwe zxc ghj cvb ...
for (String[] currLine : arrayList) {
for (String currString : currLine) {
System.out.print(currString + " ");
}
System.out.println();
}
我想将其转换为:
Array1 = [abc, def, zed, fgf]
Array2 = [qwe, zxc, ghj, cvb] ...
我会在上面搜索单词
FileReader input = new FileReader("myFile");
BufferedReader bufRead = new BufferedReader(input);
String myLine = null;
while ( (myLine = bufRead.readLine()) != null)
{
String[] array1 = myLine.split(":");
// check to make sure you have valid data
String[] array2 = array1[1].split(" ");
for (int i = 0; i < array2.length; i++)
function(array1[0], array2[i]);
}
FileReader输入=新的FileReader(“myFile”);
BufferedReader bufRead=新的BufferedReader(输入);
字符串myLine=null;
而((myLine=bufRead.readLine())!=null)
{
字符串[]数组1=myLine.split(“:”);
//检查以确保您拥有有效的数据
字符串[]array2=array1[1]。拆分(“”);
for(int i=0;i
如何使用此示例代码执行此操作?
String[][]
将对您有所帮助。对于每一行,您将有一个数组,其中包含两个其他数组,其值由分隔符分割
String[][] array = new String[(int)bufRead.lines().count()][2];
for(int i = 0; (myLine = bufRead.readLine()) != null); ++i) {
array[i][0] = myLine.split(":");
array[i][1] = array[i][0].split(" ");
...
}
要拥有一个数组,您可以使用如下类似的
ArrayList
:
List<String[]> arrayList = new ArrayList<>();
while ((myLine = bufRead.readLine()) != null) {
String[] vals = myLine.split(" ");
arrayList.add(vals);
}
这将打印:
运行:abc def zed fgf
qwe zxc ghj cvb
生成成功(总时间:0秒) EDIT创建了一个方法,该方法将查找您要查找的值的索引。但是,我建议搜索类似于
“zxc”
的结果是1,1,而不是2,2,因为数组的索引是0
public static int[] getIndex(List<String[]> arrayList, String tofind) {
int[] index = new int[]{-1, -1};
for (int i = 0; i < arrayList.size(); i++) {
String[] currLine = arrayList.get(i);
for (int j = 0; j < currLine.length; j++) {
if (currLine[j].equals(tofind)) {
index = new int[]{i + 1, j + 1};
return index;
}
}
}
return index;
}
将打印:
2,2
我在编写此打印方法时编写了此打印方法,您可以使用它方便调试:
public static void printList(List<String[]> arrayList) {
for (String[] currLine : arrayList) {
for (String currString : currLine) {
System.out.print(currString + " ");
}
System.out.println();
}
}
结果:
运行:当前列表:
abc def zed fgf
qwe zxc ghj cvb
xzc指数为:2,2
索引2,2处的修改列表:
abc def zed fgf
qwe lmnop ghj cvb
生成成功(总时间:0秒)
您的代码有什么问题?文本文件不止两行。您的意思是将整行存储在数组的第一个索引中吗?或者你的意思是字符串[]数组1,其中元素0=abc,元素1=def,元素2=zed,等等?你为什么要
myLine.split(“:”)
这不意味着该文件看起来更像abc:def-zed-fgf
@bubblebobble,我理解这一点。我在问数组的长度。我想你的意思是Array1=[]{abc,def,zed,…}
而不是Array1=[]{abc def zed…}
。这是完全不同的。在第一个示例中,您将创建一个每行值长度的数组。在第二个索引中,您正在创建一个长度为1的数组,第一个索引中的整行都是1。它是仅用于两行文本还是两行以上?这是用于文件的所有行如何找到[SIZE]?@bubblebobble,SIZE==(int)bufRead.lines().count()
,Icorrected@bubblebobble,java 8的解决方案谢谢
。我怎样才能搜索任何字符串并可以说它的索引?给我一个你正在搜索的东西的例子。zxc
,我想知道它就像列表[x][y]。因此,当我打印索引时,我可以很容易地达到该值:/您希望搜索zxc
be的结果是什么?包含xzc
的数组索引?因此,在本例中,qwe zxc ghj cvb
返回1(因为它是ArrayList
中的第二个数组)?@bubblebobble,好的,让我想一个办法。
public static void printList(List<String[]> arrayList) {
for (String[] currLine : arrayList) {
for (String currString : currLine) {
System.out.print(currString + " ");
}
System.out.println();
}
}
public static void updateIndex(List<String[]> arrayList, int[] toUpdate, String value) {
String[] rowToUpdate = arrayList.get(toUpdate[0] - 1);
rowToUpdate[toUpdate[1] - 1] = value;
}
System.out.println("Current list:");
printList(arrayList);
int[] zxcIndex = getIndex(arrayList, "zxc");
System.out.println("\nIndex of xzc is: " + zxcIndex[0] + ", " + zxcIndex[1] + "\n");
updateIndex(arrayList, zxcIndex, "lmnop");
System.out.println("Modified list at index " + zxcIndex[0] + "," + zxcIndex[1] + " :");
printList(arrayList);