[Java]提取一個文件中出現(xiàn)過的所有漢字
漢化需要這樣一個工具,奈何網(wǎng)上沒有;自己寫咯~
編輯器:Visual Studio Code 1.77.1
JDK版本:Openjdk 19.0.2
基本思路:
一些交互提示,獲取源文件和輸出文件名
初始化一個StringBuilder: selector
讀文件內(nèi)容到StringBuffer
轉(zhuǎn)成char然后使用hashset檢查重復(fù),將首次出現(xiàn)的字符寫入到一個初始化好的StringBuilder里。
寫一個布爾方法,當(dāng)滿足正則[\\u4e00-\\u9fff]或[\\u3400-\\u4dbf](Unicdoe 15.0漢字范圍)時返回true
StringBuilder再轉(zhuǎn)成char數(shù)組,循環(huán)把每個字符傳給判斷方法,返回為true時selector.append(該字符);
返回主函數(shù)打印selector到控制臺和文件。
簡圖


然后上代碼:
字符處理類
readFile方法,讀取文件并返回StringBuffer
filterString方法;使用hashset過濾重復(fù)字符,然后返回StringBuilder
selectKanji方法;繼續(xù)轉(zhuǎn)換來轉(zhuǎn)換去~
isSelected方法;當(dāng)傳入字符串成功匹配正則,返回true

整合代碼:什么?為什么import不用 *?就不用略略略~~
記得別抄下去就運行了,盡管Java跨平臺能力很強,但還是要說一下絕對路徑。代碼里面做了一些轉(zhuǎn)換,這樣直接把文件拖到控制臺就能很方便地輸入文件路徑,但僅僅是對Linux而言。Windows里絕對路徑的格式當(dāng)然是不同的,除了盤符還有逆天的反斜杠需要轉(zhuǎn)義。MacOS呢,沒用過不知道(好餓,早知道不學(xué)計算機了),應(yīng)該和linux類似。
當(dāng)然如果文件都在同一個目錄下,倒是用不著絕對路徑,那么都是通用的。

運行效果圖
