Ниже код разделен на строку \n
. Для небольшого ввода он работает, но длинный ввод не работает так, как ожидалось, для того же \n
. Чтобы исследовать то же самое, обсуждалось here. Написанная тестовая версия для проверки поведения. Он работает так, как ожидалось, для \n
, где, как было предложено в ответе на тестирование с \\\\n
в качестве регулярного выражения, когда я пытался с этой программой, я получил разницу в вычислении длины строки. Ниже приведен код и несоответствие, которое я нашел.Несоответствие длины строки String с тем же самым регулярным выражением для одного и того же ввода
public String[] token=new String[10];
public Addnumber(String input) {
// TODO Auto-generated constructor stub
this.token=input.split("\n");
System.out.println("Inside constructor Length="+token.length);
for(String s:token)
System.out.println(s);
}
public static void main(String[] args) {
String input="hi\niam\nhere";
String input1="hi\niam\nhere";
String input2="x = [2,0,5,5]\ny = [0,2,4,4]\n\ndraw y #0000ff\ny = y & x\ndraw y #ff0000";
new Addnumber(input1);//calculating via constructor
new Addnumber(input2);
String[] istring=new String[10];
//Calculating in main method
// General expression of \n
istring=input.split("\n");
System.out.println("Length calcluated when \n as regex="+istring.length);
for(String s:istring)
System.out.println(s);
istring=input2.split("\\\\n"); //Check the regex used here
System.out.println("Length calcluated when \\\\n as regex="+istring.length);
for(String s:istring)
System.out.println(s);
}
На Выполнение этого вывод программы следующим образом
Inside constructor Length=3
hi
iam
here
Inside constructor Length=6
x = [2,0,5,5]
y = [0,2,4,4]
draw y #0000ff
y = y & x
draw y #ff0000
Length calcluated when
as regex=3
hi
iam
here
Length calcluated when \\n as regex=1
x = [2,0,5,5]
y = [0,2,4,4]
draw y #0000ff
y = y & x
draw y #ff0000
Пожалуйста, обратите внимание, когда \n
является регулярное выражение, то длина строки массива, как ожидается, но когда \\\\n
в регулярном выражении он показывает длину, как и 1, но в разделение содержимого такое же, как и предыдущее. Почему расхождение в вычислении длины при изменении выражения регулярного выражения? :
Здесь возникает вопрос, почему значение длины строки массива показывает 1, когда оно может разделить контент успешно? –
Ничего не разделено. Ваш вывод просто отображает новые строки, которые находятся в вашей строке ввода. –
Спасибо, Робби за разъяснение. –