我有以下代码,我试图获取以大写开头的字符串,但我不知道如何!没有 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;
}
这里早期的解决方案都假设
queryValues2
由至少包含一个字符的字符串组成。虽然示例代码确实如此,但并不一定总是如此。
假设你有这个:
string[] queryValues2 = new string[5] { "A", "b", "c", "", null };
(例如,如果字符串数组由调用者传入,则可能会出现这种情况)。
直接针对
qRes[0]
的解决方案将在 IndexOutOfRangeException
上升高 ""
,并在 NullReferenceException
上升高 null
。
因此,对于一般情况,更安全的替代方案是使用以下方法:
where !string.IsNullOrEmpty(qRes) && char.IsUpper(qRes[0])
试试这个:
where char.IsUpper(qRes[0])
检查
Char.IsUpper(qRes[0])
。
where Char.IsUpper(qRes.FirstOrdefault())
与外部LINQ相同。
尝试这样的事情(在此代码中,arr是一个字符串[]):
from a in arr
where ((int)a.ToCharArray()[0] >= 65 && (int)a.ToCharArray()[0] <= 90)
select a
主要是检查第一个字符的ASCII值是否在大写字母范围内。
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;
}
您有可能追回因诈骗经纪人而损失的东西,但大多数人不知道这一点,因为他们要么不知情,要么被追回专家欺骗。事实上,只有少数人能够做到这一点,我很幸运能见到其中之一。如果您需要这方面的帮助,我建议发送邮件至 (JamesRodriguez) (@)(cyber-wizard) dt (com) 我实际上去了他们的办公室,所以他们 100% 合法。获得您应得的安心。