Удаление всех знаков препинания с использованием POSIX в Java и C # приводит к разным выводам - PullRequest
0 голосов
/ 03 декабря 2018

Вот моя попытка:

Java:

public static void main(String[] args) {
 String text = "This && is **^^ a ~~@@ test.";
 System.out.println(Pattern.compile("\\p{Punct}").matcher(text).replaceAll(""));
 // OUT: This  is  a  test --> As I expected
}

C #:

static void Main(string[] args) {
 string text = "This && is **^^ a ~~@@ test.";
 Console.WriteLine(Regex.Replace(text, "\\p{P}", ""));
 // OUT: This  is ^^ a ~~ test
 // expected: This  is  a  test
 Console.ReadLine();
}

Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 03 декабря 2018

"\\p{P}" означает, что то же самое в обоих Java и C # , то есть соответствует категории Unicode P (Пунктуация).

Java "\\p{Punct}" означает что-тоиначе и задокументировано как:

Пунктуация: один из !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Итак, эквивалентный C #"[!\"#$%&'()*+,\\-./:;<=>?@\\[\\\\\\]^_`{|}~]"

...