繁体   English   中英

读取文本文件java

[英]reading text file java

我正在尝试用 Java 读取文本文件(.txt)。 我需要最终将我逐字提取的文本放入二叉树的节点中。 例如,如果我有文字:“嗨,我在做测试!”,我想将其拆分为“嗨”“我”“m”“做”“a”“测试”,基本上跳过所有标点符号和空格,并将一个单词视为一系列连续的字母。 到目前为止,我能够提取单词并将它们放入数组中进行测试。 但是,如果我的 .txt 文件中有一个完全空的行,代码会将其视为一个单词并返回一个空格。 另外,行尾的标点符号也可以,但如果有逗号,然后是文本,我也会得到一个空格! 这是我到目前为止尝试过的:

    public static void main(String[] args) throws Exception
{

 FileReader file = new FileReader("File.txt");  
 BufferedReader reader = new BufferedReader(file);


String text = "";
String line = reader.readLine();

    while (line != null)
{
    text += line;
    line = reader.readLine();
}
System.out.println(text);

String textnospaces=text.replaceAll("\\s+", " ");

System.out.println(textnospaces);

String [] tokens = textnospaces.split("[\\W+]");

for(int i=0;i<=tokens.length-1;i++)
{
    tokens[i]=tokens[i].toLowerCase();
    System.out.println(tokens[i]);
}

}

使用以下文本:

没办法,来看你了今天我的朋友很难

我得到以下输出:

一世

能够

t(“t”和“come”之间的额外空格)

你(再次额外空间)

今天

我的

朋友

任何帮助,将不胜感激 ! 谢谢

使用 String 的trim()方法。 从文档http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim%28%29

"返回字符串的副本,省略前导和尾随空格。

如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 '\ '(空格字符),则返回对此 String 对象的引用。

否则,如果字符串中没有代码大于 '\ ' 的字符,则创建并返回一个表示空字符串的新 String 对象。

否则,令 k 为代码大于 '\ ' 的字符串中第一个字符的索引,并令 m 为代码大于 '\ ' 的字符串中最后一个字符的索引。 创建一个新的String对象,表示这个字符串的子串,以索引k处的字符开始,以索引m处的字符结束——即this.substring(k, m+1)的结果。

此方法可用于从字符串的开头和结尾修剪空格(如上定义)。

返回: 删除前导和尾随空格的此字符串的副本,或者如果没有前导或尾随空格,则返回此字符串。”

如果您真的只是在寻找每个连续的字符序列,则可以通过正则表达式匹配非常简单地完成此操作。

    String patternString1 = "([a-zA-Z]+)";
    String text = "I can't, come see you. Today my friend is hard";
    Pattern pattern = Pattern.compile(patternString1);
    Matcher matcher = pattern.matcher(text);

    while(matcher.find()) {
        System.out.println("found: " + matcher.group(1));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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