DotNetPerls विभिन्न स्ट्रिंग bools पार्स करने के लिए एक आसान वर्ग है।
/// <summary>
/// Parse strings into true or false bools using relaxed parsing rules
/// </summary>
public static class BoolParser
{
/// <summary>
/// Get the boolean value for this string
/// </summary>
public static bool GetValue(string value)
{
return IsTrue(value);
}
/// <summary>
/// Determine whether the string is not True
/// </summary>
public static bool IsFalse(string value)
{
return !IsTrue(value);
}
/// <summary>
/// Determine whether the string is equal to True
/// </summary>
public static bool IsTrue(string value)
{
try
{
// 1
// Avoid exceptions
if (value == null)
{
return false;
}
// 2
// Remove whitespace from string
value = value.Trim();
// 3
// Lowercase the string
value = value.ToLower();
// 4
// Check for word true
if (value == "true")
{
return true;
}
// 5
// Check for letter true
if (value == "t")
{
return true;
}
// 6
// Check for one
if (value == "1")
{
return true;
}
// 7
// Check for word yes
if (value == "yes")
{
return true;
}
// 8
// Check for letter yes
if (value == "y")
{
return true;
}
// 9
// It is false
return false;
}
catch
{
return false;
}
}
}
द्वारा कॉल किया जाता है;
BoolParser.GetValue("true")
BoolParser.GetValue("1")
BoolParser.GetValue("0")
यह किसी ऑब्जेक्ट को स्वीकार करने के लिए पैरामीटर ओवरलोड जोड़कर और भी बेहतर हो सकता है।
public static bool IsTrue(string value)
{
// Avoid exceptions
if (value == null)
return false;
// Remove whitespace from string and lowercase it.
value = value.Trim().ToLower();
return value == "true"
|| value == "t"
|| value == "1"
|| value == "yes"
|| value == "y";
}
या::
private static readonly IReadOnlyCollection<string> LOWER_TRUE_VALUES = new string[] { "true", "t", "1", "yes", "y" };
public static bool IsTrue(string value)
{
return value != null
? LOWER_TRUE_VALUES.Contains(value.Trim().ToLower())
: false;
}
ओह, आप वास्तविक कम (और बदसूरत) प्राप्त करने के लिए चाहते हैं, तो आपको लगता है कि नीचे दो को संक्षिप्त कर सकते हैं
क्या स्ट्रिंग "y" या "n" नहीं है, तो क्या आप एल्गोरिदम को बम करना चाहते हैं? –
मैं अपवाद को पकड़ने की कोशिश कर रहा था। – wonea
इसके लिए कोई समर्थन नहीं है। मुझे लगता है कि यह y/n होने के कारण _localized_ जानकारी (हां/नहीं) है जो वर्तमान संस्कृति पर निर्भर करता है। – sisve