Очистка строки

Рейтинг: 0Ответов: 2Опубликовано: 17.05.2011

Дана строка, содержащая цифры и спец. символы, допустим, %$@()#+; нужно очистить эту строку и оставить в ней только цифры от 0 до 9, те если была строка 773221(+22, то должна получиться 77322122. Как реализовать такое?

Ответы

▲ 2Принят
   public String filterString ( final String data, final String filter )
   {
      char ch;
      final StringBuffer res = new StringBuffer ();
      for ( int i = 0; i < data.length (); i++ )
      {
         ch = data.charAt ( i );
         if ( -1 == filter.indexOf ( ch ) )
         {
            res.append ( ch );
         }
      }

      return res.toString ();
   }
▲ 5

Варианта два:

  • Использовать метод replaceAll класса String. Если нужно оставить только цифры, например так:

    str.replaceAll("\\D+", "");

В целях оптимизации имеет смысл явно использовать возможности пакета java.util.regex и прекомпилированное регулярное выражение.

  • Перебрать все символы строки и оставить только те, что являются цифрой (см. метод isDigit класса Character)