简体   繁体   中英

Detecting line breaks in java

I'm writing a huffman tree and I need to know the frequencies of line breaks and spaces.

Using Scanner or InputStreamReader , is there anyway to store sentences with line breaks and spaces into a single String?

If I have the code below,

public class HuffmanTreeApp {
    public static void main(String[] args) throws IOException {
        HuffTree theTree = new HuffTree();
        System.out.print("sentence: ");
        String get;
        get = getString();
    }
    public static String getString() throws IOException {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        String s = br.readLine();
        return s;
    }
    public static char getChar() throws IOException {
        String s = getString();
        return s.charAt(0);
    }
    public static int getInt() throws IOException {
        String s = getString();
        return Integer.parseInt(s);
    }
}

and if my input is

"you are               
good";

then I wanna store all the characters including line breaks and spaces into this one string variable get . So in this case, there will be one line break and one space.

Is this possible?

Instead of using readLine (which reads characters until it finds a new line character, and then discard it), use read(char[], offset, len), which will capture new lines as well.

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

StringBuilder sb = new StringBuilder();
char [] buf = new char[0xff];

while(br.read(buf, 0, 0xff))
{
    sb.append(new String(buf, "utf-8"));
}

String result = sb.toString();

If you are reading from file, you can use

Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();

If you are taking input from a console you can use any other delimiter to end the reading.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM