jeispyun:
私のプログラムは、スキャナでTXTファイルを読み込み、Scanner.nextを()を使用することによって、一人ひとりのArrayList、単語単位でその内の単語を保存します。ここでは、非アルファベット文字を含む任意の単語が(それを交換しない)の意味が全く単語としてカウントすべきではない、無視されるべきです。例:「U2」、「データ・ベース」、または「こんにちは!」すべてでカウントすべきではありません。
私はそれがすべての単語を読んで、ArrayListにそれを保存するために作ることができますが、私は非文字要素を含む単語を無視するにこだわっています。
これは私の部分のコードです:
public static void main(String[] args) {
ArrayList<Word> wordList = new ArrayList<Word>();
int wordCount = 0;
Scanner input;
try {
System.out.println("Enter the file name with extension: ");
input = new Scanner(System.in);
File file = new File(input.nextLine());
input.close();
input = new Scanner(file);
while(input.hasNext())
{
Word w = new Word(input.next().toLowerCase()); //should be case-insensitive
if(!wordList.contains(w)) //equals method overriden in Word class
wordList.add(w);
else
{
wordList.get(wordList.indexOf(w)).addCount();
}
wordCount++;
}
input.close();
Wordのクラスは、私が定義され、単語の属性(文字列)とcount(int型)を持つ単純なクラスです。等しい()メソッドが定義されました。
私は、正規表現は、このための解決策になると思いますが、私は(私は正規表現の知識がない)正規表現で「非アルファベット」を定義する方法を確認していないので、私は固体の範囲を定義することはできません。..
任意の助けいただければ幸い!
ニコラスK:
あなたは正規表現を使用することができます^[a-zA-Z]*$
唯一のアルファベットを一致させます。あなたに追加する前に、これを使用してくださいArrayList
。
今、あなたは使用することができ.matches()
、それが唯一のアルファベットが含まれているかどうかを確認するためにStringクラスのを。例えば:
String str = "asd";
if (str.matches(^[a-zA-Z]*$)) {
// only alphabets
} else {
// something else
}