Я думаю, что ваша проблема заключается здесь (цитата из API документ , текст, выделенный мной):
"Набор разделителей (символы, разделяющие токены) может быть указан либо во время создания, либо для каждого токена."
То есть разделитель - это не строка, а набор символов. Когда вы передаете "<title>"
в качестве второго параметра, вы сообщаете своему токенизатору, что разделителями являются любой символов <
, t
, i
, t
, l
, e
или >
. Таким образом, токенизатор покорно пропускает все символы в первом теге, а затем t
и возвращает h
, потому что его нет в наборе токенов, который вы ему дали, а следующий символ (e
) -.
Так что StringTokenizer
не совсем то, что вам нужно здесь. Обратите внимание также на это замечание из документации API:
"StringTokenizer
- это устаревший класс, который сохраняется по соображениям совместимости, хотя его использование не рекомендуется в новом коде. Рекомендуется всем, кто ищет эту функциональность, использовать метод split
из String
или пакет java.util.regex
вместо этого. "
Или используйте стороннюю библиотеку, как было отмечено другими.