Java 用空格将字符串中的元素分隔为二维数组
我试图将以下字符串存储在文件中的二维数组中。我所写的代码除了当一个元素包含一个空格时,它会分离成一个额外的元素。这是我的档案:Java 用空格将字符串中的元素分隔为二维数组,java,arrays,arraylist,bufferedreader,Java,Arrays,Arraylist,Bufferedreader,我试图将以下字符串存储在文件中的二维数组中。我所写的代码除了当一个元素包含一个空格时,它会分离成一个额外的元素。这是我的档案: Student1 New York Student 2 Miami Student3 Chicago 因此,我希望我的输出如下所示: [Student1] [New York] [Student 2] [Miami] [Student3] [Chicago] 这是我的实际输出: [Student1] [New] [York] [Student]
Student1 New York
Student 2 Miami
Student3 Chicago
因此,我希望我的输出如下所示:
[Student1] [New York]
[Student 2] [Miami]
[Student3] [Chicago]
这是我的实际输出:
[Student1] [New] [York]
[Student] [2] [Miami]
[Student3] [Chicago]
以下是我到目前为止所写的内容:
String file= "file.txt";
BufferedReader br = new BufferedReader(new FileReader(file));
while ((file = br.readLine()) != null) {
if (!file.isEmpty()) {
String strSingleSpace = file.trim().replaceAll("\\s+", " ");
String[] obj = strSingleSpace.trim().split("\\s+");
int i=0;
String[][] newString = new String[obj.length][];
for(String temp : obj){
newString[i++]=temp.trim().split("\\s+");
}
List<String[]> yourList = Arrays.asList(newString);
System.out.println(yourList.get(0)[0] + " " + yourList.get(1)[0]);
String file=“file.txt”;
BufferedReader br=新的BufferedReader(新文件读取器(文件));
而((file=br.readLine())!=null){
如果(!file.isEmpty()){
字符串strSingleSpace=file.trim().replaceAll(“\\s+”,”);
String[]obj=strSingleSpace.trim().split(\\s+);
int i=0;
字符串[][]新闻字符串=新字符串[obj.length]];
用于(字符串温度:obj){
新闻字符串[i++]=temp.trim().split(\\s+);
}
List yourList=Arrays.asList(新闻字符串);
System.out.println(yourList.get(0)[0]+“”+yourList.get(1)[0]);
只是给你一些“思考的食物”:你的代码对待所有行的方式都是一样的。就好像它们看起来完全一样。虽然你已经说得很清楚,但有些行的格式不同
换句话说:盲目地分割空格是没有意义的,如果有时候空格属于第一列或第二列
相反:
您也可以将所有这些都放在一个匹配的正则表达式中;但这可能是一个家庭作业;我将这个练习留给读者。我认为对于您的特定测试用例,如果您更改这一行,它将起作用:
String[] obj = strSingleSpace.trim().split("\\s+");\
为此:
String[] obj = strSingleSpace.trim().split("\\s+", 1);