簡體   English   中英

解釋字段類型以激活C#中的復選框

[英]Interpreting field type to activate checkboxes in c#

我在建立一個好的算法上遇到了麻煩。 這是我的標准:我正在讀取xml文件中的字段作為字符串,並試圖解釋該字段以激活某些gui組件。 更具體地說,我以字符串形式讀取的字段是“允許的字符”字段,而gui組件是根據該字段的內容激活的復選框。 例如,在xml中,我有標簽

<Allowed Field>ABCDEFGHIJKLMNOPQRSTUVWXYZ</Allowed Fields>.

當我以字符串形式讀取此字段時,程序應知道該字段的內容類型為ALPHA,並選中名為alpha的復選框。 同樣,如果該字段包含字母數字內容或任何特殊字符。 該算法應解釋三個復選框:字母,字母數字和特殊字符。 我如何構建一種算法,該算法解釋從xml讀取的字符串的含義以表示所提到的字段類型?

謝謝

這是正則表達式的另一個可能的應用。

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,則可以通過設置RegexOptions.Compiled(在Regex構造函數中)來加快速度。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM