如何在Java中将文本体转换为单行字符串?

时间:2016-06-03 14:46:26

标签: java string

我想转换一个类似于以下形式的文本正文:

text here
text there
text everywhere

成一个字符串,如下所示:

textheretexttheretexteverywhere

编辑:多行上的文本将从一个文件复制并粘贴到程序的输入中,但它不一定是.txt文件。

这是我到目前为止所拥有的:

public static void converter(String inputString){

    String refinedString = inputString.replaceAll("\\s+","").replaceAll("\\\\n+", "");
    System.out.println();
    System.out.println("Refined string: " + refinedString);
}

这是我调用converter方法的主要功能:

public static void main(String [] args){
        System.out.println("Enter string: ");
        Scanner input = new Scanner(System.in);
        String originalString = input.nextLine();
        System.out.println("Original string: " + originalString);
        converter(originalString);
    }

非常感谢提前!

(我是编程的新手,很抱歉,如果我遗漏了一些非常明显的东西,我已经尝试了在堆栈溢出时可以找到的所有内容)

3 个答案:

答案 0 :(得分:3)

试试这个:

String line = "";
File f = new File("Path to your file");
FileReader reader = new FileReader(f)
BufferedReader br = new BufferedReader(reader);
String str = "";
while((line = br.readlLine())!=null)
{
    str += line; 
}

System.out.println(str);

代表空格:

str = StringUtils.replace(str," ","");

答案 1 :(得分:0)

你差不多了!您唯一“失踪”的是您在不需要的时候添加了额外的.replaceAll

此外,听起来您可能有不同类型的输入,但这里有一个基于您的代码的解决方案:

编辑:以下是以下解决方案:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String [] args){
        System.out.println("Enter string: ");
        Scanner input = new Scanner(System.in);
        List<String> lines = new ArrayList<> ();
        String line = null;
        while (!(line = input.nextLine()).isEmpty()) {
            lines.add(line);
        }
        StringBuilder myOriginalString = new StringBuilder();
        for (String s : lines) {
            myOriginalString.append(s);
            myOriginalString.append(" ");
            myOriginalString.append("\n");
        }
        String originalString = myOriginalString.toString();
        System.out.println("Original string: \n"  + originalString);
        converter(originalString);
    }

    public static void converter(String inputString){
        String refinedString = inputString.replaceAll("\\s+","");
        System.out.println();
        System.out.println("Refined string: " + refinedString);
    }

}

输出:

Enter string: 
text here
text there
text everywhere

Original string: 
text here 
text there 
text everywhere 


Refined string: textheretexttheretexteverywhere

Process finished with exit code 0

我尽力围绕你要提供的输入类型进行建模。根据您的问题,我假设您在运行程序时将文本复制并粘贴到提示符中。如果你想从一个文件中读取,那么Mahbubur Ra​​hman的答案是正确的(我不会在这个答案中复制它,因为他值得赞扬。)

答案 2 :(得分:0)

这应该有用。

String list = "text here\n";
list += "text there\n";
list += "text everywhere\n";

System.out.println("Original :\n"+list);

list= list.replace("\n", "").replace(" ", "");
System.out.println("New :\n"+list);