Как вставить новую строку в строку в Android

Вопрос может показаться глупым, но я искал и не нашел ответа.

Я создаю приложение для Android, и в нем есть кнопка, которая отправит некоторую информацию по электронной почте, и я не хочу, чтобы все было в одном абзаце.

Вот что делает мое приложение для putExtra тела письма:

I am the first part of the info being emailed. I am the second part. I am the third part.

Вот что я хочу сделать:

I am the first part of the info being emailed.
I am the second part.

I am the third part.

Как мне поместить новую строку в строку или с помощью метода putExtra для этого?

Спасибо.


person Reed    schedule 16.06.2011    source источник


Ответы (5)


Попробуйте использовать System.getProperty("line.separator"), чтобы получить новую строку.

person keno    schedule 17.06.2011
comment
Кроме того, я научился помещать \n в строку, чтобы вставить новую строку - person Reed; 10.08.2011
comment
@Jakar System.getProperty("line.separator") не зависит от платформы, а \n — нет. Но если вы разрабатываете приложения для Android, платформа исправлена, а linux/android использует \n в качестве символа новой строки. википедия/новая строка - person wischi; 18.03.2015
comment
@wischi, хороший вопрос. А \r\n, как мне кажется, более кросс-системно совместим (поправьте меня, если я ошибаюсь) и, как следствие, лучше подходит для передачи данных. Например, если вы отправляете электронное письмо, используя \n, и оно читается в системе, использующей \r\n, вы можете потерять строки, тогда как в большинстве случаев, если вы передаете \r\n системе, которой требуется только \n, это компенсирует это. Я могу ошибаться здесь, и у меня нет источника. Это только то, что я накопил за время. - person Reed; 18.03.2015

Пытаться:

String str = "my string \n my other string";

При печати вы получите:

my string
my other string

person user824013    schedule 24.08.2011
comment
Это не зависит от системы. Некоторые системы используют \r\n для разрыва строки. - person Gibolt; 11.03.2018
comment
@Gibolt Эта система IS независима. Android работает только на устройствах на базе Linux, поэтому \n одинакова для всех устройств. - person AndroidDev; 02.03.2021

Лично я бы предпочел использовать "\n". Это просто помещает разрыв строки в Linux или Android.

Например,

String str = "I am the first part of the info being emailed.\nI am the second part.\n\nI am the third part.";

Вывод

I am the first part of the info being emailed.
I am the second part.

I am the third part.

Более обобщенным способом было бы использование,

System.getProperty("line.separator")

Например,

String str = "I am the first part of the info being emailed." + System.getProperty("line.separator") + "I am the second part." + System.getProperty("line.separator") + System.getProperty("line.separator") + "I am the third part.";

дает тот же результат, что и выше. Здесь статический метод getProperty() класса System можно использовать для получения "line.seperator" для конкретной ОС.

Но это совсем не обязательно, так как ОС здесь фиксированная, то есть Android. Таким образом, вызов метода каждый раз является тяжелой и ненужной операцией.

Кроме того, это также увеличивает длину вашего кода и делает его запутанным. «\n» — это красиво и просто.

person Aritra Roy    schedule 21.07.2015
comment
У вас есть пробелы после новых строк в вашей строке, которые не отображаются в выводе, а в выводе есть дополнительная пустая строка. - person Matthew Read; 21.07.2015
comment
@MatthewRead Спасибо, я удалил пробелы. Но нигде не вижу лишней пустой строки. - person Aritra Roy; 22.07.2015

Я использую <br> в теге CDATA. Например, мой файл strings.xml содержит такой элемент:

<item><![CDATA[<b>My name is John</b><br>Nice to meet you]]></item>

и печатает

My name is John
Nice to meet you
person marcolav    schedule 22.03.2018

Если вы хотите добавить разрыв строки во время выполнения в строку из той же строки, из которой вы получаете значение, тогда этот код Kotlin работает для меня:

str = "<br>"+str?.replace("," , "</br><br>")+"</br>"
value = HtmlCompat.fromHtml(${skill_et_1}",Html.FROM_HTML_MODE_LEGACY)
tv.text = value
person Mohit Kumar    schedule 15.06.2021
comment
Здесь вы используете val в качестве переменной, но val — зарезервированное ключевое слово в kotlin. - person Yashovardhan99; 15.06.2021