![](/img/trans.png)
[英]C# Selecting a CheckBoxList item(s) by matching against an Array of strings
[英]Matching a string against an array of strings
我有四個要與輸入字符串匹配的操作數組。
我的嘗試:
string[] operations = {"add","sub","mul","div"};
string rawInput = Console.ReadLine();
string[] inputs = rawInput.Split(delims,StringSplitOptions.RemoveEmptyEntries);
firstInput = inputs[0].Trim();
foreach (string operation in operations)
{
if (firstInput.Contains(operation))
Console.WriteLine("Valid operation: {0}",operation);
}
如我所料,如果我輸入add,sub,mul或div,這將打印Valid operation
。
為了輸出無效輸入的消息,我添加了如下條件:
else
{
Console.WriteLine("Invalid operation: {0}", firstInput);
break;
}
如果我現在輸入sub
,我得到:
Invalid operation: sub
如果我刪除break語句並輸入sub
:
Invalid operation: sub
Valid operation: sub
Invalid operation: sub
Invalid operation: sub
如何修改邏輯,以便只收到一次正確的消息?
查看第一個輸入是否在您的有效操作列表中,而不是相反(使用LINQ):
if (operations.Contains(firstInput))
{
Console.WriteLine("Valid operation: {0}", firstInput);
}
else
{
Console.WriteLine("Invalid operation: {0}", firstInput);
}
如果已經遍歷列表,那么這是一種選擇:
bool foundValidOP = false;
foreach (string operation in operations)
{
if (firstInput.Equals(operation, StringComparison.InvariantCultureIgnoreCase))
{
foundValidOP = true;
break;
}
}
if (foundValidOP)
{
Console.WriteLine("Valid operation: {0}", firstInput);
}
else
{
Console.WriteLine("Invalid operation: {0}", firstInput);
}
您的foreach
循環會遍歷operations
每個條目,因此您的邏輯是不正確的,因為如果輸入與operations
中的第一個元素(即"add"
)不匹配,則它將超出循環。 如果發現有效操作,您確實想跳出循環,否則繼續掃描。 這是一些示例代碼:
bool validOperation = false;
foreach (string operation in operations)
{
if (firstInput.Contains(operation))
{
Console.WriteLine("Valid operation: {0}",operation);
validOperation = true;
break;
}
}
if (!validOperation)
{
Console.WriteLine("Invalid operation: {0}", firstInput);
}
您可以嘗試以下方法:
string[] operations = { "add", "sub", "mul", "div" };
var firstInput = "sudb";
var x = operations.SingleOrDefault(o => o == firstInput);
if (x != null)
Console.WriteLine("Valid:" + x);
else
Console.WriteLine("Invalid:" + firstInput);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.