[英]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.