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