如何在JAVA中按新行拆分字符串?
我想在Java中按新行拆分字符串。我使用以下正则表达式-如何在JAVA中按新行拆分字符串?,java,split,inputstream,Java,Split,Inputstream,我想在Java中按新行拆分字符串。我使用以下正则表达式- str.split("\\r|\\n|\\r\\n"); 但它仍然并没有用新行分割字符串。 输入- Output=String[]array={“0000”}而我想要的是String[]array={“0”、“0”、“0”、“0”}。 我读过关于堆栈溢出的各种解决方案,但没有一种适合我 代码是- import java.io.BufferedReader; import java.io.IOException; import j
str.split("\\r|\\n|\\r\\n");
但它仍然并没有用新行分割字符串。
输入-
Output=String[]array={“0000”}而我想要的是String[]array={“0”、“0”、“0”、“0”}。
我读过关于堆栈溢出的各种解决方案,但没有一种适合我
代码是-
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
public class Input {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
String text = "";
try {
while((line=br.readLine())!=null){
text = text + line;
}
} catch (IOException e) {
e.printStackTrace();
}
String [] textarray = text.trim().split("[\\r\\n]+");
for(int j=0;j<textarray.length;j++)
System.out.println(textarray[j]);
// System.out.print("");
// for(int i=((textarray.length)-1);i>=0;i--){
// long k = Long.valueOf(textarray[i]).longValue();
// System.out.println(k);
//// double sqrt = Math.sqrt(k);
//// double value = Double.parseDouble(new DecimalFormat("##.####").format(sqrt));
//// System.out.println(value);
////
//// }
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.text.DecimalFormat;
公共类输入{
公共静态void main(字符串[]args){
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
弦线;
字符串文本=”;
试一试{
而((line=br.readLine())!=null){
文本=文本+行;
}
}捕获(IOE异常){
e、 printStackTrace();
}
字符串[]textarray=text.trim().split([\\r\\n]+”);
对于(int j=0;j=0;i--){
//long k=long.valueOf(textary[i]).longValue();
//系统输出println(k);
////双sqrt=数学sqrt(k);
////double value=double.parseDouble(新的十进制格式(“sqrt”);
////系统输出打印项次(值);
////
//// }
}
更新的答案:
如果您正在从键盘读取inputstream
,则可能无法正确地将\n输入数据。在这种情况下,您可能需要选择一个新的sentinel值
原始答复:
我认为您需要创建一个sentinel值。因此,如果\n
是您的sentinel值,您可以这样做:
inputstream
加载到string
变量中字符串
变量,查看\n
是否在输入中(您可以使用for循环
和子字符串(i,i+2)
调用
br.readLine()
时,换行符将从字符串末尾剥离。因此,如果键入0+ENTER
四次,则尝试拆分字符串“0000”
您最好从stdin中读取项目并将其存储在可扩展的数据结构中,例如
列表
。如果您已经单独读取了项目,则无需拆分它们。请提供重现该问题的示例代码。我尝试了针对字符串输入=“0\n0\n0\n0”的模式
,它工作正常。你能提供你的代码吗?是的,你提供了代码。你对split()
方法的输入是“0000”
,因此这也是你以后得到的。你能不能也发布造成问题的用户的确切输入?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
public class Input {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
String text = "";
try {
while((line=br.readLine())!=null){
text = text + line;
}
} catch (IOException e) {
e.printStackTrace();
}
String [] textarray = text.trim().split("[\\r\\n]+");
for(int j=0;j<textarray.length;j++)
System.out.println(textarray[j]);
// System.out.print("");
// for(int i=((textarray.length)-1);i>=0;i--){
// long k = Long.valueOf(textarray[i]).longValue();
// System.out.println(k);
//// double sqrt = Math.sqrt(k);
//// double value = Double.parseDouble(new DecimalFormat("##.####").format(sqrt));
//// System.out.println(value);
////
//// }
}