首页 > 解决方案 > 在 C# 中拆分包含英语和希伯来语的字符串

问题描述

我有这个字符串:

string str = "לא קיימת תוכנה לשליחת מיילים במכשיר, אנא פנה אלינו ישירות ל moshecohen@gmail.com";

我正在尝试按以下方式拆分它:

string[0] = "לא קיימת תוכנה לשליחת מיילים במכשיר, אנא פנה אלינו ישירות ל "
string[1] = "moshecohen@gmail.com"

我正在使用这种拆分方法:

string[] split =  Regex.Split(str, @"^[א-ת]+$");

我想在希伯来语和英语单词之间进行拆分,但如果最后一个单词与当前单词相同,请将其添加到最后一个

但我不能让它工作,我做错了什么?

谢谢

标签: c#regexstring

解决方案


这是一种方法:

[\p{IsHebrew}\P{L}]+|\P{IsHebrew}+

将此模式用于Regex.Matches

var matches = Regex.Matches(input, @"[\p{IsHebrew}\P{L}]+|\P{IsHebrew}+");

该模式有两个部分。它要么匹配:

  • [\p{IsHebrew}\P{L}]+- 包含希伯来字符和非字母的块,

或者

  • \P{IsHebrew}+- 非希伯来语字符块(包括非希伯来语字母和其他非字母字符)。

我们正在使用Unicode 命名块,例如\p{IsHebrew}\p{IsBasicLatin}

一个类似的选项是[\p{IsHebrew}\P{L}]+|[\p{IsBasicLatin}\P{L}]+- 专门匹配带有拉丁(英文)字母的块。

工作示例:正则表达式风暴C# 示例


推荐阅读