Можете ли вы определить, что вы подразумеваете под специальным символом ?Вы имеете в виду «только буквенно-цифровые символы»?
Если вы хотите удалить все возможные специальные символы и оставить только буквенно-цифровые символы, вы можете использовать следующее:
s = s.replaceAll("[^a-zA-Z0-9]", "");
Если вы хотите напечатать их по одному:
s = s.replaceAll("[^a-zA-Z0-9]", "/");
String[] splitString = s.split("/");
for(String str:splitString)
{
System.out.println(str);
}
EIDT: Так как вы спросили: в приведенном выше коде используется расширенный цикл для цикла (также называемый циклом for-each), введенный Java 5. Использование 'normal'for цикл, это:
s = s.replaceAll("[^a-zA-Z0-9]", "/");
String[] splitString = s.split("/");
for(int i=0; i<splitString.length(); i++)
{
String str = splitString[i];
System.out.println(str);
}
Также:
StringTokenizer
- это устаревший класс, который сохраняется из соображений совместимости, хотя его использование не рекомендуется в новом коде.Всем, кто ищет эту функцию, рекомендуется использовать метод split
из String
или пакет java.util.regex
.
(из javadoc )