0

StreamTokenizer を使用して Java ファイルから名前を抽出したいと考えています。空白をコンマとして設定しました

        inputTokenizer.whitespaceChars(',', ',');

ただし、名前の入力ファイルを解析すると (姓と名の間にスペースを入れる)、トークナイザーは姓を 1 つのトークンとして扱い、姓を別のトークンとして扱います。両方を同じトークンとして扱いたいのですが、どうすればよいですか?

たとえば、「Billy Jean」は 2 つの別個のトークン (Billy - token1 Jean - token2) として扱われますが、1 つとして扱いたいと考えています。

ありがとう

4

1 に答える 1

3

あなたの問題は、(明らかに)スペースがデフォルトで区切り文字と見なされることです(驚くことはほとんどありません)。コンマを空白文字として設定したため、コンマとスペースの両方が空白文字と見なされます。次のプログラムは、私があなたが望むと思うことを行います。スペースを「wordChars」に設定する行に注意してください。

import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.StringReader;


public class TokenTeaser
{
  public static void main(String[] args)
  {
    try
    {
      String testString = "one two, three, four five";
      StringReader sr = new StringReader(testString);
      StreamTokenizer st = new StreamTokenizer(sr);
      st.whitespaceChars(',', ',');
      st.wordChars(' ', ' ');
      int currentToken = st.nextToken();
      while (currentToken != StreamTokenizer.TT_EOF)
      {
        System.out.println(st.sval);
        currentToken = st.nextToken();
      }
    }
    catch (IOException e)
    {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }

}
于 2013-09-01T01:37:33.297 に答える