将长字符串分成单个单词以进入二叉树

时间:2014-12-09 19:47:59

标签: java string text-files

所以我正在阅读一个文本文件到我的程序中,假设它被分解为单个单词并存储在二叉树中。

到目前为止,我已将我的文本文件转换为单个字符串,然后修改该字符串以删除所有标点符号并使所有内容都小写(我被指示这样做)。我很难找到一种方法来将我的大量字符串分解为单个单词,然后我需要将其插入到二叉树中。

这是我的代码

public class Tester {

//Start the program
public static void main(String[] args) throws FileNotFoundException {

    Tester run = new Tester();
    run.it();

}

//run Program step by step
public void it() throws FileNotFoundException { 

    BTree theTree = new BTree();
    this.readInFile();

    theTree.print();

}

//Read file into string
public String readInFile() throws FileNotFoundException {


    String myFile = "";
    int numWords = 0;

    Scanner myScan = new Scanner(new File("Dracula.txt"));

    while(myScan.hasNext() == true) {

        myFile += myScan.nextLine();

    }

    return myFile;

}

//delete punctuation make all letters lowercase
public String stripPunctuation(String myFile) {

    myFile.replace('.', ' ');
    myFile.replace(',', ' ');
    myFile.replace('!', ' ');
    myFile.replace('?', ' ');
    myFile.replace('(', ' ');
    myFile.replace(')', ' ');
    myFile.replace('"', ' ');
    myFile.replace('[', ' ');
    myFile.replace(']', ' ');
    myFile.toLowerCase();
    return myFile;

}

//here is where i want to break up the string and add each word to my binary tree
public BTree fillTree(String myFile) {

    BTree thisTree = new BTree();

    while()

    return thisTree;

}

}

我认为while循环可能会有所帮助,但我不确定如何通过char扫描字符串char以正确分解它。

1 个答案:

答案 0 :(得分:1)

使用split()

String[] words = str.split("\\s+");

split()使用正则表达式来确定输入的哪个部分是分隔符。正则表达式\s+表示“一个或多个空格字符”。

此外,您的代码中存在错误。这一行:

myFile += myScan.nextLine();

将具有将一行的最后一个单词与下一行的第一个单词连接起来的效果。解决这个问题的最小变化是:

myFile += myScan.nextLine() + " ";