本文整理汇总了C#中CharSet.Add方法的典型用法代码示例。如果您正苦于以下问题:C# CharSet.Add方法的具体用法?C# CharSet.Add怎么用?C# CharSet.Add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CharSet
的用法示例。
在下文中一共展示了CharSet.Add方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CharClass
/// <summary>
/// 初始化 <see cref="Cyjb.Compilers.Lexers.CharClass"/> 类的新实例。
/// </summary>
public CharClass()
{
CharSet defaultSet = new CharSet();
for (int i = 0; i <= char.MaxValue; i++)
{
defaultSet.Add((char)i);
}
charClassList = new List<CharSet>();
charClassList.Add(defaultSet);
}
示例2: GetCharClassSet
/// <summary>
/// 获取字符类中包含的所有字符。
/// </summary>
/// <param name="charClass">要获取所有字符的字符类。</param>
/// <returns>字符类中包含的所有字符。</returns>
private static CharSet GetCharClassSet(string charClass)
{
CharSet set = new CharSet();
if (RegexCharClass.IsSubtraction(charClass) || RegexCharClass.ContainsCategory(charClass))
{
for (int i = 0; i <= char.MaxValue; i++)
{
if (RegexCharClass.CharInClass((char)i, charClass))
{
set.Add((char)i);
}
}
}
else
{
// 如果不包含差集和 Unicode 字符分类的话,可以更快。
string ranges = RegexCharClass.GetCharClassRanges(charClass);
if (RegexCharClass.IsNegated(charClass))
{
int s = 0;
for (int i = 0; i < ranges.Length; i++)
{
for (int j = s; j < ranges[i]; j++)
{
set.Add((char)j);
}
i++;
s = i < ranges.Length ? ranges[i] : char.MaxValue + 1;
}
for (int j = s; j <= char.MaxValue; j++)
{
set.Add((char)j);
}
}
else
{
for (int i = 0; i < ranges.Length; i++)
{
int j = ranges[i++];
int end = i < ranges.Length ? ranges[i] : char.MaxValue + 1;
for (; j < end; j++)
{
set.Add((char)j);
}
}
}
}
return set;
}