我有一组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个字符。
答案 0 :(得分:3)
好的,所以你有一组空格分隔的字符串和一组40个字符。您希望找到哪些字符串(以空格分隔)仅由这40个字符的组合构成?
@ Chris,是的,确实。
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();