Удалить символы конца строки из строки Java
У меня есть такая строка
"hello
java
book"
Я хочу удалить \r и \n из строки (привет \r\njava\r\nbook). Я хочу строку как "hellojavabook". Как я могу это сделать?
12 ответов
Regex с replaceAll.
public class Main
{
public static void main(final String[] argv)
{
String str;
str = "hello\r\njava\r\nbook";
str = str.replaceAll("(\\r|\\n)", "");
System.out.println(str);
}
}
Если вы хотите удалить \r\n только когда они являются парами (приведенный выше код удаляет \ r или \n), сделайте это вместо:
str = str.replaceAll("\\r\\n", "");
public static void main(final String[] argv)
{
String str;
str = "hello\r\n\tjava\r\nbook";
str = str.replaceAll("(\\r|\\n|\\t)", "");
System.out.println(str);
}
Также было бы полезно добавить табуляцию в регулярные выражения.
Если вы хотите избежать регулярного выражения или должны использовать более раннюю JVM, String.replace() сделает:
str=str.replace("\r","").replace("\n","");
И удалить пару CRLF:
str=str.replace("\r\n","");
Последнее более эффективно, чем построение регулярных выражений, чтобы сделать то же самое. Но я думаю, что первый будет быстрее в качестве регулярного выражения, поскольку строка анализируется только один раз.
Учитывая строку Str:
str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
Вы можете напрямую передать терминатор строки, например, \ n, если вы знаете терминатор строки в Windows, Mac или UNIX. В качестве альтернативы вы можете использовать следующий код для замены разрывов строк в любой из трех основных операционных систем.
str = str.replaceAll("\\r\\n|\\r|\\n", " ");
Над строкой кода заменит разрывы строк пробелами в Mac, Windows и Linux. Также вы можете использовать разделитель строк. Это будет работать для всех ОС. Ниже приведен фрагмент кода для разделителя строк.
String lineSeparator=System.lineSeparator();
String newString=yourString.replace(lineSeparator, "");
Ты можешь использовать unescapeJava
от org.apache.commons.text.StringEscapeUtils
как ниже
str = "hello\r\njava\r\nbook";
StringEscapeUtils.unescapeJava(str);
Вы пытались использовать метод replaceAll для замены любого вхождения \n или \r пустой строкой?
static byte[] discardWhitespace(byte[] data) {
byte groomedData[] = new byte[data.length];
int bytesCopied = 0;
for (int i = 0; i < data.length; i++) {
switch (data[i]) {
case (byte) '\n' :
case (byte) '\r' :
break;
default:
groomedData[bytesCopied++] = data[i];
}
}
byte packedData[] = new byte[bytesCopied];
System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
return packedData;
}
Код найден в проекте Commons-Codec.
я пошел с
\\s+
и он удалил
\r
а также
\n
символы для меня.
\s+
будет соответствовать одному или нескольким символам пробела
final String stringWithWhitespaceChars = "Bart\n\r";
final String stringWithoutEscapeChars = stringWithEscapeChars.replaceAll("\\s+","");
Обратитесь к выражениям Regex в Java, \\s vs. \\s+ для получения подробной информации.
Эй, мы также можем использовать это решение для регулярных выражений.
String chomp = StringUtils.normalizeSpace(sentence.replaceAll("[\\r\\n]"," "));
Попробуйте код ниже. У меня это сработало.
str = str.replaceAll("\\r", "");
str = str.replaceAll("\\n", "");
Ты пробовал
string.trim();
Это предназначено, чтобы урезать все ведущие и наклоняющиеся в то время как места в последовательности. Надеюсь это поможет.
Изменить: (Я не был достаточно явным)
Итак, когда вы используете string.split(), у вас будет строка [] - для каждой из строк в массиве выполните string.trim() и затем добавьте ее.
String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
buff.append(token.trim());
}
Используйте stringBuffer/Builder вместо добавления в той же строке.