c# - 在 C# 中拆分包含英语和希伯来语的字符串
问题描述
我有这个字符串:
string str = "לא קיימת תוכנה לשליחת מיילים במכשיר, אנא פנה אלינו ישירות ל moshecohen@gmail.com";
我正在尝试按以下方式拆分它:
string[0] = "לא קיימת תוכנה לשליחת מיילים במכשיר, אנא פנה אלינו ישירות ל "
string[1] = "moshecohen@gmail.com"
我正在使用这种拆分方法:
string[] split = Regex.Split(str, @"^[א-ת]+$");
我想在希伯来语和英语单词之间进行拆分,但如果最后一个单词与当前单词相同,请将其添加到最后一个
但我不能让它工作,我做错了什么?
谢谢
解决方案
这是一种方法:
[\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}]+
- 专门匹配带有拉丁(英文)字母的块。
推荐阅读
- asp.net - 如何将数据发送到客户端系统的端口?
- sql - 执行批处理时出错。错误消息是:指定的签名大小为零。(HRESULT 异常:0x80131237)
- java - 为什么在下面的代码中使用两个大括号?这里不是匿名内部类)
- netty - Netty ChannelHandler的exceptionCaught和channelInactive有什么区别
- git - git - rebase 分支,建立在另一个之上,在 master 上
- swift - 缺少 64 位支持。提交到 App Store 的 iOS 应用程序必须包含 64 位支持
- javascript - 淡入改变背景图像jquery
- java - android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' 在空对象引用上
- mongodb - 为什么当前数据库未在“show dbs”中列出?
- unity3d - Dialogflow API V2 统一 SDK