仅使用字母,否则返回true

时间:2017-08-27 17:25:25

标签: c#

好吧所以我需要测试一个包含除字母之外的变量的变量;意思是不允许空格,没有数字也没有符号。我以为我已经弄明白但我无法正常工作。这就是我所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace soro
{
    class Program
    {
        static void notOnlyString(string word)
        {
            Regex.IsMatch(word, @"^[a-zA-Z]+$");
        }

        static void Main(string[] args)
        {
            string var1;
            //lots of code here
            var1 = Console.ReadLine();
            if (notOnlyString(var1))
            {
                //do this if it has a number, space or symbol; anything but 
                //letters
            }
            //more code
         }
    }

3 个答案:

答案 0 :(得分:1)

您可以使用

进行检查
bool result = word.All(Char.IsLetter);

如果你需要Digits使用它

bool result = word.All(Char.IsLetterOrDigit);

答案 1 :(得分:1)

你的正则表达式看起来是正确的。关于代码的一个重大错误是notOnlyString的返回类型。

notOnlyString的命名很糟糕。不要使用“否定”语句作为方法名称。我建议IsOnlyLetters

由于您要在if语句中调用IsOnlyLetters,因此应返回bool值。

static bool notOnlyString(string word) // note that I changed "void" to "bool"
{
    return Regex.IsMatch(word, @"^[a-zA-Z]+$"); / here I added "return" to return the result of the "IsMatch" call.
}

现在你应该将if语句中的条件更改为(!IsOnlyLetters(var1)),一切都应该有效。

答案 2 :(得分:-1)

您应该将正则表达式语法更改为: ^ [A-ZA-Z] * $

一个不错的在线工具是Regex Tester

希望这有帮助, 哔叽