C# 基于特定字符的Unicode代码pont检索特定字符

C# 基于特定字符的Unicode代码pont检索特定字符,c#,c#-4.0,C#,C# 4.0,我有一组40个字符,它们有自己的代码点。例如,U0678,u0679等等。如何根据代码点从文本中检索仅包含这些字符的单词、字符串和子字符串,而忽略所有其他字符?我的旧密码让我很痛苦 private string token(string x) { Regex exclude = new Regex(@"\d|\s+|/|-|[A-Za-z]", RegexOptions.Compiled); return string.Join(" ", (from s in Reg

我有一组40个字符,它们有自己的代码点。例如,
U0678
u0679
等等。如何根据代码点从文本中检索仅包含这些字符的单词、字符串和子字符串,而忽略所有其他字符?我的旧密码让我很痛苦

private string token(string x)
{
    Regex exclude = new Regex(@"\d|\s+|/|-|[A-Za-z]", RegexOptions.Compiled);
    return string.Join(" ",
      (from s in Regex.Split(x, "([ \\t{}():;.,!ـ؛،؟ \"\n])")
       where !exclude.IsMatch(s)
       select s).ToArray());
}
编辑。假设我有字符串“aaa bbb ccc ddd”。然后我只想检索单词aaa和bbb。然后我想做一些类似的事情

Regex regEx = new Regex(@"\u0041|\u0042");
Match match = regEx.Match(mystring);
if(match.Success)
 then do somthing
但我有40个字符


好的,您有一组空格分隔的字符串和一组40个字符。您希望找到这些字符串(由空格分隔)中的哪些仅由这40个字符的组合组成

@克里斯,没错

var charSet=newhashset(“abcde\x015f”+Regex.Unescape(“\u0066”);
//或者var charSet=newhashset(new[]{'a','b','c','d','e','ş','f'});
//或var charSet=new HashSet(new[]{'\x0061'、'\x0062'、'\x0063'、'\x0064'、'\x0065'、'\x015F'、'\x0066'});
//或者var charSet=newhashset(Regex.Unescape(“\u0061\u0062\u0063\u0064\u0065\u015F\u0066”);
//或var charSet=newhashset(“\x0061\x0062\x0063\x0064\x0065\x015F\x0066”);
字符串输入=“abc defşaaa xyz”;
var words=input.Split()
.Where(s=>!String.IsNullOrWhiteSpace)
.Where(s=>s.All(c=>charSet.Contains(c)))
.ToList();

问题仍然不清楚。添加示例。“痛苦”在这里是什么意思?@Henk,这就像根据字符Unicode码点从文本中检索所有英语单词一样。@Qaesar也许您应该提供示例输入/输出。给定一个示例输入
x
,预期返回的字符串是什么?我已更新了问题OK,因此您有一组空格分隔的字符串和一组40个字符。你想知道哪些字符串(用空格分隔)是由这40个字符的组合组成的吗?我可以用代码点而不是字符来填充哈希集吗???@L.B.问题是我有40个字符。我可以把它们的代码点放在哈希集中而不是字符本身吗?
var charSet = new HashSet<char>("abcde\x015f" + Regex.Unescape("\u0066"));
//or var charSet = new HashSet<char>(new[] { 'a', 'b', 'c', 'd', 'e', 'ş', 'f'});
//or var charSet = new HashSet<char>(new[] { '\x0061', '\x0062', '\x0063', '\x0064', '\x0065', '\x015F', '\x0066'});
//or var charSet = new HashSet<char>(Regex.Unescape("\u0061\u0062\u0063\u0064\u0065\u015F\u0066"));
//or var charSet = new HashSet<char>("\x0061\x0062\x0063\x0064\x0065\x015F\x0066");

string input = "abc  defş aaa xyz";

var words =  input.Split()
                .Where(s => !String.IsNullOrWhiteSpace(s))
                .Where(s => s.All(c => charSet.Contains(c)))
                .ToList();