解释字段类型以激活c#中的复选框

本文关键字:复选框 激活 字段 类型 解释 | 更新日期: 2023-09-27 18:04:35

我在构建一个好的算法时遇到了一些困难。以下是我的标准:我将xml文件中的一个字段作为字符串读取,并试图对其进行解释,以便激活一些gui组件。更具体地说,我以字符串形式读入的字段是一个"允许字符"字段,gui组件是根据字段内容激活的复选框。例如,在xml中,我有标签

<Allowed Field>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Allowed Fields>.

当我将该字段作为字符串读取时,程序应该知道字段内容类型是ALPHA,并选中名为ALPHA的复选框。同样,如果字段包含字母数字内容或任何特殊字符。我有三个复选框,算法应该解释:字母、字母数字和特殊字符。我如何构建算法,将我从xml中读取的字符串的含义解释为所提到的字段类型?

感谢

解释字段类型以激活c#中的复选框

这是Regex的另一个可能应用程序。

static Regex isAlpha = new Regex("^[A-Za-z]+$");
static Regex isAlphaNumeric = new Regex("^[A-Za-z0-9]+$");
static FieldKind AnalyzeKind (string s)
{
    if(isAlpha.IsMatch(s)) return FieldKind.Alpha;
    if(isAlphaNumeric.IsMatch(s)) return FieldKind.AlphaNumeric;
    return FieldKind.AlphaNumericWithSpecialCharacters;
}

如果你打算在程序中大量调用AnalyseKind,你可以通过在Regex构造函数中设置RegexOptions.Compiled来加快速度。

static FieldKind AnalyzeKind (string s)
{
    bool hasNumbers, hasSpecial;
    foreach (char c in s) {
        if (Char.IsNumber (c))
            hasNumbers = true;
        else if (!Char.IsLetter (c))
            return FieldKind.AlphaNumericWithSpecialCharacters;
    }
    return (hasNumbers) ? FieldKind.AlphaNumeric : FieldKind.Alpha;
}

其余的取决于您定义的特殊字符(例如,什么是空白?标点符号?(
Char方法供您参考。