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

时间:2011-08-04 14:03:17

标签: c#

我在构建一个好的算法时遇到了一些麻烦。这是我的标准:我正在读取xml文件中的字段作为字符串并尝试解释它以激活某些gui组件。更具体地说,作为字符串读入的字段是“允许字符”字段,并且gui组件是基于字段内容激活的复选框。例如,在xml中我有标签

<Allowed Field>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Allowed Fields>.

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

由于

2 个答案:

答案 0 :(得分:2)

这是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来加快速度。

答案 1 :(得分:1)

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方法供您参考。