在Java和C#中使用POSIX删除所有标点符号会产生不同的输出



这是我的尝试:

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();
}

有什么想法吗?非常感谢。

"\p{P}"在Java和C#中的意思相同,即匹配Unicode类别P(标点符号(。

Java的"\p{Punct}"意味着其他东西,并且被记录为

标点:!"#$%&'()*+,-./:;<=>?@[]^_`{|}~之一

因此,等价的C#是"[!"#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~]"

相关内容

  • 没有找到相关文章

最新更新