Регулярное выражение для удаления всего, кроме символов и цифр - PullRequest
25 голосов
/ 05 июня 2011

Я хотел бы удалить все, кроме символов a-z, A-Z и 0-9 из строки, поэтому мне нужно создать регулярное выражение для Java string.replaceAll(regex, "");

Старая строка будет выглядеть так:

MAX EUK_1334-PP/B+

Новая строка должна выглядеть следующим образом:

MAXEUK1334PPB

Ответы [ 5 ]

67 голосов
/ 05 июня 2011

Возможно, существует более краткое регулярное выражение, но это, безусловно, сработает:

string.replaceAll("[^a-zA-Z0-9]", "");
17 голосов
/ 05 июня 2011
string.replaceAll("[^a-zA-Z0-9]+", "");
2 голосов
/ 05 июня 2011
String test = "MAX EUK_1334-PP/B+";     
test = test.replaceAll("[\\W_]", "");
System.out.println(test + "\n");

Печатный результат:

MAXEUK1334PPB
1 голос
/ 05 июня 2011

Некоторые забывают символ "_":

String regex = "[_\\W]";

public class RegexFun2 {
   public static void main(String[] args) {
      String test = "MAX EUK_1334-PP/B+";

      String regex = "[_\\W]";

      String result = test.replaceAll(regex, "");
      System.out.println(result);
   }
}

Но все же я думаю, что ОП обманывает себя, не демонстрируя, что он пытался первым, и публикуя свою попыткув своем первоначальном вопросе.Просто мои 2 цента.

0 голосов
/ 05 июня 2011

Вы можете использовать значения символов ASCII:

while(!end of string){
    if(valueOfChar is between 48-57 or 65-90 or 97-122)
          write it to your string
}

Это может помочь, но я не знаю, должен ли ты писать код с replaceAll. И replaceAll, и этот код работают с одинаковой производительностью (O(n)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...