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

标签 java c# regex punctuation

这是我的尝试:

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}"意味着别的东西,是 documented如:

Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

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

关于java - 在 Java 和 C# 中使用 POSIX 删除所有标点符号会产生不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53598873/

相关文章:

php - preg_replace_callback 突出显示模式在结果中不匹配

javascript - 如何将数据从 Java 传递到 JavaScript Web 应用程序?

java - Maven NAR 依赖关系 - 无法解析依赖关系

java - 包含来自 FXML 的 FontAwesomeFX 图标和字形

c# - 如何在 Xamarin.Forms 中检测 Stacklayout 的左滑动和右滑动?

c# - ASP.NET Core - 自定义模型验证

c# - 对 Listview C# 上的项目进行排序

c++ - 在 unix 中查找 ^@ 字符?

用于删除日期模式字符串中年份的 Java 正则表达式

java - 如何生成 CIDOC CRM 格式的 RDF 文件