英文:
Java split a string into an array by newline
问题
public class Test {
public static void main(String[] args) throws IOException {
String test = "Michael Porter Jr. 2018-19 Panini Prizm Silver Prizm PSA 10 Gem Mint! Hot! ?? \n 2018 Prizm Silver MICHAEL PORTER JR. RC PSA 10 Gem Mint";
System.out.println(test);
String[] test_split = test.split("\\r?\\n");
for (String t : test_split) {
System.out.println(t);
}
}
}
Your code should now correctly split the input string into an array of strings, and the loop will print each of the split strings separately.
英文:
Edit: I have modified the question for simplicity.
I have this method to split a long string into an array of strings and it shall return a double string, so that I can write it on a .csv file later:
public class Test {
public static void main(String[] args) throws IOException {
String test = "Michael Porter Jr. 2018-19 Panini Prizm Silver Prizm PSA 10 Gem Mint! Hot! ?? \n 2018 Prizm Silver MICHAEL PORTER JR. RC PSA 10 Gem Mint";
System.out.println(test);
String[] test_split = test.split("\\r?\\n");
for (String t : test_split) {
System.out.println(test_split.toString());
}
}
}
My code returns this:
Michael Porter Jr. 2018-19 Panini Prizm Silver Prizm PSA 10 Gem Mint! Hot! ??
2018 Prizm Silver MICHAEL PORTER JR. RC PSA 10 Gem Mint
[Ljava.lang.String;@4a574795
[Ljava.lang.String;@4a574795
I actually expected to have an arrays with the 2 names (split by the newline character), but I got something weird. How may I fix this please?
答案1
得分: 2
你似乎正在打印一个字符串数组,而不是一个字符串,根据您发布的输出,而不真正看到您实际调用 println 的方式是什么。如果情况确实如此,您也可以使用:
Arrays.toString(yourArray);
英文:
You seem to be printing out an Array of Strings not a String, judging by the output you posted, without really seeing in which way you actually call e.g. println.
If this is really the case you could also use:
Arrays.toString(yourArray);
答案2
得分: 1
可能更好的做法是将数组反转。将它们变成 2xN
而不是 Nx2
。以下是您方法的一部分代码。
String[][] nameAndPrice = new String[2][listingName_extract.length];
for (int i = 0; i < listingName_extract.length; i++) {
nameAndPrice[0][i] = String.valueOf(listingName_extract[i]);
nameAndPrice[1][i] = String.valueOf(listingPrice_extract[i]);
}
return nameAndPrice;
而且您可能应该使用 Arrays.toString()
来打印数组。
System.out.println(Arrays.toString(nameAndPrice[0]));
System.out.println(Arrays.toString(nameAndPrice[1]));
然后,如果您想要将它们并排打印出来。
for (int i = 0; i < listingName_extract.length; i++) {
System.out.println(nameAndPrice[0][i] + " " + nameAndPrice[1][i]);
}
英文:
It might be better if you reversed the arrays. Make them a 2xN
instead of an Nx2
Here is a segment of your method.
String[][] nameAndPrice = new String[2][listingName_extract.length];
for (int i = 0; i < listingName_extract.length; i++) {
nameAndPrice[0][i] = String.valueOf(listingName_extract[i]);
nameAndPrice[1][i] = String.valueOf(listingPrice_extract[i]);
}
return nameAndPrice;
And you should probably be using Arrays.toString() to print out the array.
System.out.println(Arrays.toString(nameAndPrice[0]);
System.out.println(Arrays.toString(nameAndPrice[1]);
Then if you want to print them side by side.
for (int i = 0; i < listingName_extract.length; i++) {
System.out.println(nameAndPrice[0][i] + " " + nameAndPrice[1][i]);
}
</details>
# 答案3
**得分**: 0
根据用户TheThingAboveMe和Andreas的建议,我应该关注t(字符串),而不是test_split(数组本身)。
我还根据用户WJS的建议编辑了我的代码。
<details>
<summary>英文:</summary>
As users TheThingAboveMe and Andreas suggested, I should be looking at t (the strings) and not the test_split (the array itself).
I have also edited my code per user WJS's suggestion.
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论