3

これは私がこれまでに持っているものですが、文字と数字を含めたいだけだと言うコードがどこにも見つかりません。正規表現に慣れていません。現在、「#」を含めても、コードは while ループを無視します。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

    }

    private void okBtn_Click(object sender, EventArgs e)
    {
        if(textBox1.Text.Contains(@"^[^\W_]*$"))
        {
            fm1.txtFileName = textBox1.Text;
            this.Close();
        }
        else
        {
            MessageBox.Show("Filename cannot include illegal characters.");
        }
    }
}
4

4 に答える 4

5

メソッドchar.IsLetterOrDigitを使用して、入力文字列に文字または数字のみが含まれているかどうかを確認できます。

if (input.All(char.IsLetterOrDigit))
{
    //Only contains letters and digits
    ... 
}
于 2013-07-24T16:42:15.153 に答える
2

次のパターンを使用できます。

@"^[^\W_]*$"

^および$は、文字列の開始と終了のアンカーです。

\wはすべての文字、すべての数字、およびアンダースコアを表すため、文字クラスからアンダースコアを削除する必要があります。

于 2013-07-24T16:42:29.957 に答える
2

無効なファイル名をチェックしているので、代わりにPath.GetInvalidPathCharsを使用します。

char[] invalidChars = Path.GetInvalidPathChars();
if (!input.All(c => !invalidChars.Contains(c)))
{
    //invalid file name
于 2013-07-24T16:49:50.430 に答える