Поиск символа новой строки \n в строке

[Аннотация: мне нужен способ удалить токен новой строки (\n) из массивной строки, надеюсь, без регулярного выражения]

Для моего класса CS мы должны читать в лабиринте из текстового файла, который будет выглядеть примерно так:

##############################
#@...........................#
##############################
##############################
##############################
##############################
##############################
##############################
##############################
##############################
------------------------------
##############################
##############################
#@...........................#
##############################
##############################
##############################
##############################
##############################
##############################
##############################
------------------------------
##############################
##############################
##############################
#@...........................#
##############################
##############################
##############################
##############################
##############################
##############################
------------------------------

Пунктирные линии обозначают отдельные этажи. Это трехмерный лабиринт.

Это всего лишь тест на чтение лабиринта, так что кусочки не имеют значения. Мы должны прочитать весь лабиринт в одну строку, используя класс Scanner, но затем мы должны иметь возможность проверить каждый отдельный (x, y, z) и вернуть, какой символ существует в этой точке. Моя идея состоит в том, чтобы разделить огромную строку на трехмерный массив символов (char[][][]), но для этого необходимо удалить символы новой строки из огромной строки лабиринта. Есть ли способ удалить токены \n из массивной строки, надеюсь, без использования регулярных выражений. Я много оглядывался, но не могу найти четкого ответа. Многие люди предлагают использовать регулярные выражения, но я не слишком знаком с этим и хотел бы избежать этого, если это возможно. Спасибо за вашу помощь.


person Nick Alexander    schedule 10.02.2014    source источник
comment
Если вы используете Scanner, вы можете просто использовать Scanner#nextLine итеративно для использования каждой строки и удаления новой строки при каждой прочитанной строке.   -  person ajp15243    schedule 10.02.2014
comment
Если вы хотите разбить строку на строки, посмотрите в javadoc класса String метод с именем split.   -  person Mike Samuel    schedule 10.02.2014


Ответы (3)


Используйте замену:

String input="###...##";
String output=input.replace("\n","");
person rekire    schedule 10.02.2014
comment
Я понял это сам не через 5 минут после публикации этого вопроса. Я чувствую себя совершенно невежественным сейчас. Я так долго смотрел на проблему, что даже самые очевидные решения становятся не столь очевидными. Будет отмечен как ответ после ограничения по времени. Спасибо. - person Nick Alexander; 10.02.2014

Если вы читаете строки как Strings, вы можете использовать метод trim():

String line = "...\n".trim();

public String trim(): возвращает копию строки с опущенными начальными и конечными пробелами.

person Christian    schedule 10.02.2014

Java распознает символ новой строки как одиночный символ, т. е. "\n" — это одиночный символ. Поэтому я предполагаю, что если вы используете сканер для чтения каждого символа, вы можете включить вместе с ним условие if, чтобы всякий раз, когда обнаруживается новый символ строки, он игнорировал его. Что-то вроде:

if(character!="\n")
{
    //your code to keep the character into the array
}
person Dame Lyngdoh    schedule 10.02.2014