如何在Java中从复制粘贴的文本中删除新行字符(\n)?
我有一个代码,它替换了用户引入的一些字符空格、字符串制表符,然后显示文本:如何在Java中从复制粘贴的文本中删除新行字符(\n)?,java,string,Java,String,我有一个代码,它替换了用户引入的一些字符空格、字符串制表符,然后显示文本: System.out.println("Text:"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); try { String text = bufferedReader.readLine(); text = text.replaceAll
System.out.println("Text:");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try {
String text = bufferedReader.readLine();
text = text.replaceAll("\n", "");
text = text.replaceAll(" ", "");
text = text.replaceAll("\t", "");
System.out.println(text);
} catch (IOException e) {
}
但当我粘贴varios线条的文本时:
First Substring Introduced
Second Substring Introduced
Third Substring Introduced
它只显示第一个换行前的子字符串,如:
firstSubtringIntroduced
我想获得整个粘贴文本的下一个结果:
FirstSubstringIntroducedSecondSubstringIntroducedThirdSubstringIntroduced
删除每行的制表符和空格后,尝试将所有行聚合在一起:
StringBuilder sb = new StringBuilder();
String text = "";
try {
while ((text = br.readLine()) != null) {
text = text.replaceAll("[\t ]", "");
sb.append(text);
}
}
catch (IOException e) {
}
System.out.println(sb);
这里的问题是您的BufferedReader一次只读取一行
作为替代方案,并且更接近当前解决方案,您可以只使用System.out.print,它不会自动打印换行符,而不是System.out.println:
删除每行的制表符和空格后,尝试将所有行聚合在一起:
StringBuilder sb = new StringBuilder();
String text = "";
try {
while ((text = br.readLine()) != null) {
text = text.replaceAll("[\t ]", "");
sb.append(text);
}
}
catch (IOException e) {
}
System.out.println(sb);
这里的问题是您的BufferedReader一次只读取一行
作为替代方案,并且更接近当前解决方案,您可以只使用System.out.print,它不会自动打印换行符,而不是System.out.println:
你只读了一行,第一行:
String text = bufferedReader.readLine(); //just one line
这就是为什么输出只显示处理的第一行。你应该做一个循环,以读取你正在输入的所有行:
while((text=bufferedReader.readLine())!=null)
{
text = text.replaceAll("\n", "");
text = text.replaceAll(" ", "");
text = text.replaceAll("\t", "");
System.out.print(text);
}
第一个循环将打印FirstSubstringImported,第二个SubstringImported,依此类推,直到处理完所有行。您只读取一行,第一行:
String text = bufferedReader.readLine(); //just one line
这就是为什么输出只显示处理的第一行。你应该做一个循环,以读取你正在输入的所有行:
while((text=bufferedReader.readLine())!=null)
{
text = text.replaceAll("\n", "");
text = text.replaceAll(" ", "");
text = text.replaceAll("\t", "");
System.out.print(text);
}
第一个循环将打印firstSubstringImported,第二个SubstringImported,依此类推,直到所有行都被处理。注意StringreplaceAll需要一个正则表达式。Stringreplace将第一个参数的所有引用替换为所需的第二个参数
System.out.println(text.replace("\n", "").replace("\r", ""));
方法名称有点混乱。请注意,StringreplaceAll需要一个正则表达式。Stringreplace将第一个参数的所有引用替换为所需的第二个参数
System.out.println(text.replace("\n", "").replace("\r", ""));
public static void main(String args[]) {
System.out.println("Text:");
StringBuilder stringBuilder = new StringBuilder();
try (InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Scanner scanner = new Scanner(bufferedReader);
) {
while (scanner.hasNext()) {
stringBuilder.append(scanner.next());
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(stringBuilder.toString());
}
方法名称有点混乱
public static void main(String args[]) {
System.out.println("Text:");
StringBuilder stringBuilder = new StringBuilder();
try (InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Scanner scanner = new Scanner(bufferedReader);
) {
while (scanner.hasNext()) {
stringBuilder.append(scanner.next());
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(stringBuilder.toString());
}
我确实认为这是你需要的
我认为这正是您所需要的。我喜欢第二种解决方案,即目前最好的解决方案。但是我怎样才能退出while状态呢?这似乎迫使我现在两次引入Enter,这导致在后续实现中出现一些失败。我不明白为什么您甚至要提供输入,因为您的示例代码没有暗示这一点。我喜欢第二个解决方案,目前最好的解决方案。但是我怎样才能退出while状态呢?似乎这迫使我现在两次引入Enter,并且在后续的实现中产生了一些失败。我不明白为什么您甚至会给出输入,因为您的示例代码并没有暗示这一点。System.out语句将在何时执行?@lsi When System.out.printlnstringBuilder.toString;invoke.System.out语句何时执行?@lsi When System.out.printlnstringBuilder.toString;援引