Я написал простую игру на Java, которая может быть инициализирована строкой. Чтобы настроить плату, моя программа разделяет строку на новые строки или вертикальные полосы. Игра отлично работает, если строка использует вертикальные столбцы, но не работает, когда строка использует символы новой строки. Вот код, который я имею проблемы с:Confused by split(), indexOf() и regex в Java
String rowSeparator, indexChar;
if(board.indexOf("|") >= 0) {
rowSeparator = "\\|";
indexChar = "|";
} else {
rowSeparator = "\\n";
indexChar = "\n";
}
columns = board.indexOf(indexChar); //this one is set to -1 when the error occurs (\n instead of vertical bars)
rows = board.split(rowSeparator).length; //this one is set to 1
Вот пример строки, которая работает:
"*###########*|# #|# ... ... #|# *$$ $.$ #|# $*+$ $*$$ #|# *$$ $.$ #|# ... . #|# #|*###########*"
Если я заменяю вертикальные полосы с «\ п», это Безразлично 't вернуть правильные значения для столбцов и строк. Может ли кто-нибудь помочь мне понять, что я делаю неправильно?
EDIT: Я не знаю, является ли это актуальным, но когда я запускаю отладчик, значение строки, использующей символы новой строки, равно «########## \\ n # # \\ n # ... ... # \\ n # $$ $. $ # \\ n # $ + $ $ * $$ # \\ n # $$ $. $ # \\ n # .... # \\ n # # \\ n ########### * *. Он имеет две обратные косые черты вместо одного (именно так я вошел в него). Это может быть проблема?
не использовать '\\ n' использовать только' \ n' – TheLostMind
"не возвращает правильные значения для столбцов и строк" какие значения он возвращает? Неясно, относятся ли ваши комментарии к фрагменту «\ n». –
символьные литералы должны быть в одинарных кавычках, '\ n'! = "\ N"? –