我想在Java中用新行拆分字符串。我正在使用以下正则表达式 -
str.split("\\r|\\n|\\r\\n");
但它仍然不是用新行分割字符串。 输入 -
0
0
0
0
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);
////
//// }
}
答案 0 :(得分:3)
当您致电br.readLine()
时,换行符将从字符串末尾删除。因此,如果您键入0 + ENTER
四次,则会尝试拆分字符串"0000"
。
最好从stdin中读取项目并将它们存储在可扩展的数据结构中,例如List<String>
。如果您已经单独阅读过,则无需拆分。
答案 1 :(得分:0)
更新的答案:
如果您正在从键盘上读取inputstream
,则\ n可能无法正确输入数据。在这种情况下,您可能想要选择一个新的哨兵值。
原始答案:
我相信你需要创造一个哨兵价值。因此,如果\n
是您的哨兵价值,您可以执行以下操作:
inputstream
加载到string
变量string
变量检查字符,查看输入中是否有\n
(您可以使用for loop
和substing(i, i+2)