2010-09-24 5 views
0

Уважаемый Все, У меня есть 2 строки ввода 1) стека, над, поток 2) stack/over, flow, com Я бы хотел напечатать только строки (без специального символа) из вышеприведенного 2 ввода для 1-го ввода я использовал ниже функцию, но для второго ввода я не знаю, как обрабатывать его. Pls дает мне решение.Печать только строки

st = new StringTokenizer("stack,over,flow", ","); 
     while (st.hasMoreTokens()) 
     { 
      String token = st.nextToken(); 
      System.out.println("token = " + token); 
     } 

выход:

stack 
over 
flow 
+0

Вы можете форматировать код, так что читаем? Нажмите «Изменить» и используйте советы по форматированию, показанные в правой части страницы (после того, как вы нажмете «edit») – Nivas

+0

SOrry Я новичок в stackoverflow, поэтому я разместил как это. После этого я правильно опубликую свой вопрос. – Mohan

ответ

0

Вы можете определить, что вы имеете в виду: special char? Вы имеете в виду «только буквенно-цифровые символы»?

Если вы хотите, чтобы удалить все возможные специальные символы и оставить только буквенно-цифровые символы, то вы можете использовать следующие:

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: Поскольку вы спросили: приведенный выше код использует enhanced for loop (также называемый для каждого цикла), введенный 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 of String или java.util.regex пакет вместо этого.

(от javadoc)

+0

Можете ли вы рассказать мне, что такое значение str для цикла. – Mohan

+0

str - переменная цикла. В коде, который я упомянул, используется улучшенный для цикла java 5. Я отредактировал ответ, чтобы добавить «normal» для цикла – Nivas

+0

Невозможно вызвать length() для типа массива String [], я получил эту ошибку при компиляции отредактированного кода. – Mohan

0

необходимо отформатировать ваш вопрос лучше, это трудно следовать. Но если я правильно прочитал,

st = new StringTokenizer("stack,over,flow", ",/"); 

Должно работать нормально.

+0

Спасибо, что это хорошо работает. – Mohan

0

Это должно работать для вас в обоих случаях:

String[] strArr=yourString.split("[/,]"); 
    for(String str:strArr) 
    { 
    System.out.println(str); 
    } 
Смежные вопросы