Удалите знаки препинания (оставьте буквы, цифры c и юникод) Java - PullRequest
1 голос
/ 18 июня 2020

Попытка удалить все символы пунктуации, но сохранить все буквенно-цифровые c и другие подобные символы типа Unicode, необходимые для языка (т.е. не математические символы). Например:

test1string                =>     test1string
test2-string               =>     test2string
test.3!string              =>     test3string
тестовоезадание!строка.    =>     тестовоезаданиестрока
????String               =>     String

Можно придумывать больше примеров, чтобы прояснить вопросы. В настоящее время используется [\\w\\p{l}]+, чтобы разрешить желаемые значения, но при этом многие символы преобразуются в ?.

1 Ответ

1 голос
/ 19 июня 2020

Я предлагаю использовать

text.replaceAll("[\\p{P}\\p{S}]+|[\\p{L}&&[^\\x00-\\x{FFFF}]]+", "")

Подробности

  • [\p{P}\p{S}]+ - 1 или несколько знаков препинания и символов
  • | - или
  • [\p{L}&&[^\x00-\x{FFFF}]]+ - 1 или несколько букв, отличных от тех, что определены в плоскости BMP.

См. Java демонстрацию :

String text = "test1string\ntest2-string\ntest.3!string\nтестовоезадание!строка.\n????String";
System.out.println(text.replaceAll("[\\p{P}\\p{S}]+|[\\p{L}&&[^\\x00-\\x{FFFF}]]+", ""));

Вывод:

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