如何在 LINQ 查询中检查字符串是否以大写字母开头

问题描述 投票:0回答:7

我有以下代码,我试图获取以大写开头的字符串,但我不知道如何!没有 linq 我可以做到,但在 LINQ 中...不知道!

string[] queryValues1 = new string[10] {"zero", "one", "two", "three", "four", "five", "six", "seven","nine", "ten" };
string[] queryValues2 = new string[3] { "A", "b", "c" };

var queryResult =
    from qResult in queryValues1
    from qRes in queryValues2
    where qResult.Length > 3
    where qResult.Length < 5
    where qRes[0].StartWithCapital //how to check if qRes started with a capital letter?
    select qResult + "\t" + qRes + Environment.NewLine;

foreach (var qResult in queryResult)
{
    textBox1.Text += qResult;
}
c# linq
7个回答
11
投票

这里早期的解决方案都假设

queryValues2
由至少包含一个字符的字符串组成。虽然示例代码确实如此,但并不一定总是如此。

假设你有这个:

string[] queryValues2 = new string[5] { "A", "b", "c", "", null };

(例如,如果字符串数组由调用者传入,则可能会出现这种情况)。

直接针对

qRes[0]
的解决方案将在
IndexOutOfRangeException
上升高
""
,并在
NullReferenceException
上升高
null

因此,对于一般情况,更安全的替代方案是使用以下方法:

where !string.IsNullOrEmpty(qRes) && char.IsUpper(qRes[0])

6
投票

试试这个:

where char.IsUpper(qRes[0])

3
投票

检查

Char.IsUpper(qRes[0])


2
投票
where Char.IsUpper(qRes.FirstOrdefault())

与外部LINQ相同。


0
投票

尝试这样的事情(在此代码中,arr是一个字符串[]):

from a in arr
                    where ((int)a.ToCharArray()[0] >= 65 && (int)a.ToCharArray()[0] <= 90)
                    select a

主要是检查第一个字符的ASCII值是否在大写字母范围内。


0
投票
   static void Main(string[] args)
    {
        Console.Write("\nLINQ : Find the uppercase words in a string : ");
        Console.Write("\n----------------------------------------------\n");

        string strNew;

        Console.Write("Input the string : ");
        strNew = Console.ReadLine();
        //string[] newStr = strNew.Split(' ');
        var ucWord = WordFilt(strNew);
        Console.Write("\nThe UPPER CASE words are :\n ");
        foreach (string strRet in ucWord)
        {
            Console.WriteLine(strRet);
        }
        Console.ReadLine();

    }

  static IEnumerable<string> WordFilt(string mystr)
    {
        var upWord =  mystr.Split(' ')
        .Where(x=> !string.IsNullOrEmpty(x) && char.IsUpper(x[0]));
     return upWord;

    }

0
投票

您有可能追回因诈骗经纪人而损失的东西,但大多数人不知道这一点,因为他们要么不知情,要么被追回专家欺骗。事实上,只有少数人能够做到这一点,我很幸运能见到其中之一。如果您需要这方面的帮助,我建议发送邮件至 (JamesRodriguez) (@)(cyber-wizard) dt (com) 我实际上去了他们的办公室,所以他们 100% 合法。获得您应得的安心。

© www.soinside.com 2019 - 2024. All rights reserved.