我试图解决一个问题,我有一个字符串与混合语言作为输入。
例如。现代汽车公司현대자동차现代其他一些英文单词
我想把字符串分割成不同的语言块。
例如。“现代汽车公司”、“현대자동차”,“现代”、“其他一些英语单词”
或(空格/标点符号和顺序不重要)
"HyundaiMotorCompany“、”현대자동차“,”现代“、"SomeotherEnglishwords”
有什么简单的方法可以解决这个问题吗?或者我能用的任何组件/nuget包?
谢谢
编辑:我认为我的“语言块”是模糊的。我想要的“语言块”是语言字符集。
例如,“现代汽车公司”是英文字符集,현대자동차是韩语组,"现代“是中文组,”其他一些英语单词“在英语组。
为澄清我的问题的要求而增加的内容如下:
1:输入可以有空格或任何其他标点符号,但我总是可以使用正则表达式忽略它们。
他说:我会对输入进行预处理,不理睬辩证法.所以在我的输入中"a“变成了”a“。所以所有喜欢英语的字都会变成英文字。
我真正想要的是找到一种方法,将输入解析成不同的语言字符集,忽略空格和标点符号。
例如“现代汽车公司현대자동차现代--另一个英语单词” "HyundaiMotorCompany“、”현대자동차“,”现代“、"SomeotherEnglishwords”
发布于 2017-08-10 17:14:01
发布于 2017-08-10 17:54:06
据我所知,从你的问题中,你想要区分英语和非英语(Unicode)字符。我们可以在这里使用[\x00-\x7F]+正则表达式。请注意,^用于非英语字符。
string input = "Hyundai Motor Company 현대자동차 现代 Some other English words";
string englishCharsPattern = "[\x00-\x7F]+";
var englishParts = Regex.Matches(input, englishCharsPattern)
.OfType<Match>()
.Where(m => !string.IsNullOrWhiteSpace(m.Groups[0].Value))
.Select(m => m.Groups[0].Value.Trim())
.ToList();
string nonEnglishCharsPattern = "[^\x00-\x7F]+";
var nonEnglishParts = Regex.Matches(input, nonEnglishCharsPattern)
.OfType<Match>()
.Select(m => m.Groups[0].Value)
.ToList();
var finalParts = englishParts;
finalParts.AddRange(nonEnglishParts);
Console.WriteLine(string.Join(",", finalParts.ToArray())); 这给了我们:
Hyundai Motor Company,Some other English words,현대자동차,现代https://stackoverflow.com/questions/45619497
复制相似问题