检查String是否包含全部“?”

时间:2010-11-04 00:35:31

标签: c#

如何检查字符串是否包含所有问号?像这样:

string input =“????????”;

8 个答案:

答案 0 :(得分:21)

您可以使用Enumerable.All

bool isAllQuestion = input.All(c => c=='?');

答案 1 :(得分:16)

var isAllQuestionMarks = input.All(c => c == '?');

答案 2 :(得分:6)

        string = "????????";
        bool allQuestionMarks = input  == new string('?', input.Length);

刚刚进行了比较:

这种方法比input.All(c => c=='?');

快x倍
public static void Main() {
            Stopwatch w = new Stopwatch();
            string input = "????????";
            w.Start();
            bool allQuestionMarks;
            for (int i = 0; i < 10; ++i ) {
                allQuestionMarks = input == new string('?', input.Length);
            }
            w.Stop();
            Console.WriteLine("String way {0}", w.ElapsedTicks);


            w.Reset();
            w.Start();
            for (int i = 0; i < 10; ++i) {
                allQuestionMarks = input.All(c => c=='?');
            }
            Console.WriteLine(" Linq way {0}", w.ElapsedTicks);
            Console.ReadKey();
        }

字符串方式11  Linq方式4189

答案 3 :(得分:4)

这么多linq答案!我们不能再以老式的方式做任何事了吗?  这比linq解决方案快一个数量级。更具可读性?也许不是,但这就是方法名称的用途。

    static bool IsAllQuestionMarks(String s) {

        for(int i = 0; i < s.Length; i++)
            if(s[i] != '?')
                return false;

        return true;
    }

答案 4 :(得分:3)

bool allQuestionMarks = input.All(c => c == '?');

这使用the LINQ All method,它“确定序列的所有元素是否满足条件。”在这种情况下,集合的元素是字符,条件是字符等于问号字符。

答案 5 :(得分:3)

不太可读......但是regular expression是另一种方法(而且速度很快):

// Looking for a string composed only by one or more "?":
bool allQuestionMarks = Regex.IsMatch(input, "^\?+$");

答案 6 :(得分:2)

你可以在linq中做到这一点......

bool result = input.ToCharArray().All(c => c=='?');

答案 7 :(得分:0)

你也可以试试这个:

private bool CheckIfStringContainsOnlyQuestionMark(string value)
{
    return !value.Where(a => a != '?').Select(a => true).FirstOrDefault();
}