-2

独自のコードポイントを持つ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());
}

編集しました。文字列「aaabbbcccddd」があるとします。次に、aaaとbbbという単語のみを取得したいと思います。それなら私は次のようなことをしたいです

Regex regEx = new Regex(@"\u0041|\u0042");
Match match = regEx.Match(mystring);
if(match.Success)
 then do somthing

しかし、私は40文字を持っています。

4

1 に答える 1

3

さて、スペースで区切られた文字列のセットと40文字のセットがあります。これらの文字列(スペースで区切られている)のうち、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();
于 2012-12-16T18:39:50.563 に答える