簡體   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