Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查字符串是否包含所有的"&引用;_C# - Fatal编程技术网

C# 检查字符串是否包含所有的"&引用;

C# 检查字符串是否包含所有的"&引用;,c#,C#,如何检查字符串是否包含所有问号?像这样: 字符串输入=“???????” 您可以使用: 你可以在林克做 bool result = input.ToCharArray().All(c => c=='?'); 这将使用,它“确定序列的所有元素是否满足条件”。在这种情况下,集合的元素是字符,条件是字符等于问号字符 var isAllQuestionMarks = input.All(c => c == '?'); 只是做了一个比较: 这样堆x比输入快 publicstaticvoid

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

字符串输入=“???????”

您可以使用:


你可以在林克做

bool result = input.ToCharArray().All(c => c=='?');
这将使用,它“确定序列的所有元素是否满足条件”。在这种情况下,集合的元素是字符,条件是字符等于问号字符

var isAllQuestionMarks = input.All(c => c == '?');
只是做了一个比较:

这样堆x比
输入快

publicstaticvoidmain(){
秒表w=新秒表();
字符串输入=“???????”;
w、 Start();
布尔所有问号;
对于(int i=0;i<10;++i){
allQuestionMarks=input==新字符串(“?”,input.Length);
}
w、 停止();
WriteLine(“字符串方式{0}”,w.ElapsedTicks);
w、 重置();
w、 Start();
对于(int i=0;i<10;++i){
allQuestionMarks=input.All(c=>c=='?');
}
Console.WriteLine(“Linq-way{0}”,w.ElapsedTicks);
Console.ReadKey();
}
字符串方式11
Linq way 4189

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

    static bool IsAllQuestionMarks(String s) {

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

        return true;
    }
static bool IsAllQuestionMarks(字符串s){
对于(int i=0;i
可读性不强。。。但a是另一种方法(而且速度很快):

您也可以尝试以下方法:

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

你不是在测试不平等的案例——这是一个不公平的测试。你只是在检查“所有”的最坏情况-我很高兴你能纠正它。只要把测试做得更好,把结果放进去就行了in@Reed,您在哪里看到否定检查?“All”在第一个不匹配的元素上失败。@macias:是的,但他正在检查一个字符串,它永远不会提前失败。他的测试总是为所有人创建“最坏情况”的场景。@Reed,Preet(不是“他”)测试匹配情况下的字符串相等性,这也是字符串比较的最坏情况。定义fast,因为我认为它不比linq解决方案快,但不具有可读性。定义:足够快。我不是在比较regex和linq,我只是在展示另一种方式。我不确定linq是否更可读——或者你是说linq,一个功能性的单元dsl,比正则表达式更容易理解…?:-)对我来说,它们都有着相似的特点:易于书写,在你写完之后就不那么容易理解了。
        string = "????????";
        bool allQuestionMarks = input  == new string('?', input.Length);
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();
        }
    static bool IsAllQuestionMarks(String s) {

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

        return true;
    }
// Looking for a string composed only by one or more "?":
bool allQuestionMarks = Regex.IsMatch(input, "^\?+$");
private bool CheckIfStringContainsOnlyQuestionMark(string value)
{
    return !value.Where(a => a != '?').Select(a => true).FirstOrDefault();
}