我正在讀取檔案資料如下:
string cellData = _reader.GetField("name").ToLower();
我想檢查 cellData 是否不等于 true 或 false 作為字串。
我嘗試了以下方法:
if (cellData != "true" || cellData != "false") { }
上面代碼的問題總是會回傳true。
所以我所做的我創建了一個陣列,然后使用包含:
string[] boolValues = { "true", "false" };
if (!boolValues.Contains(cellData)) { //error }
是否可以使用 c# 運算子檢查字串是否不包含單詞 true 或 false 如果它包含其中之一則回傳錯誤 使用單行 if 陳述句不應回傳錯誤
uj5u.com熱心網友回復:
你這樣寫的代碼可以修復,但是它只會檢查檔案是否有一個字?!
string[] boolValues = { "Hello", "stack", "true", "false" };
if (!boolValues.Contains(cellData))
{ //error; need using System.Linq;
Console.WriteLine("Not exist");
}
else
{
Console.WriteLine("exist");
}
string[] boolValues = { "Hello", "stack", "true", "false" };
if (!boolValues.Contains(cellData))
{ //error; need using System.Linq;
Console.WriteLine("Not exist");
}
else
{
Console.WriteLine("Exist");
}
或者查看之前的其他答案
uj5u.com熱心網友回復:
如果您的要求僅限于檢查值“true”和“false”,您可以嘗試將字串決議為布林值。無論大小寫,它都會決議字串。
string cellData = "TruE"; // "true", "False", "false", "not_bool"
if(!bool.TryParse(cellData, out bool result))
{
"cellData is Not true nor false".Dump();
}
else
{
$"cellData is {result}".Dump();
}
uj5u.com熱心網友回復:
只是為了驗證,您的問題陳述是
我想驗證一個字串,如果它是文字,則該字串是有效的,
true或者false我可以識別錯誤
正確的?
你可以這樣說。
var isValid = s == "true" || s == "false";
if (isValid )
{
// handle valid case here
}
else
{
// handle invalid case here
}
這當然是最簡單的方法。但是你不應該認為這個測驗區分大小寫,這可能會導致問題。但是這是否是一個問題完全取決于您的用例。
請注意,將這樣的斷言隔離到它們自己的變數中是一種很好的做法(編譯器的優化器將以這種方式對其進行優化),并為其命名以表達您的意圖。也更喜歡積極的斷言isValid而不是消極的斷言isNotValid。因為像這樣的測驗
if ( ! isNotValid ) { ... }
沒有意義(雙重否定)并且難以理解,而像這樣的測驗
if ( ! isValid ) { ... }
非常有道理并且很容易理解。
另一種方法是使用正則運算式:
var rxTrueFalse = new Regex(@"^(true|false)$");
var isValid = rxTrueFalse.isMatch(s);
if (isValid )
{
// handle valid case here
}
else
{
// handle invalid case here
}
如果您希望它不區分大小寫,添加適當的正則運算式選項就可以解決問題:
var rxTrueFalse = new Regex(@"^(true|false)$", RegexOptions.Ignorecase);
uj5u.com熱心網友回復:
public static class StringExtension
{
public static bool EqualsIgn(this string text, string textToCompare)
=> text.Equals(textToCompare, StringComparison.OrdinalIgnoreCase);
public static bool HasEquals(this string text, params string[] textArgs)
{
for (int index = 0; index < textArgs.Length; index )
{
if (text.EqualsIgn(textArgs[index])) { return true; }
}
return false;
}
public static bool HasNoEquals(this string text, params string[] textArgs)
=> text.HasEquals(textArgs) == false;
}
public class Program
{
public static void Main(string[] args)
{
if (cellData.HasNoEquals("true", "false"))
{
// code here
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352738.html
上一篇:嘗試添加用戶驗證時出現問題
下一篇:后續if陳述句
