আমার এমন একটি রয়েছে stringযা "0" বা "1" হতে পারে এবং এটি গ্যারান্টিযুক্ত যে এটি অন্য কিছু হবে না।
সুতরাং প্রশ্নটি হ'ল: এটিকে রূপান্তর করার সর্বোত্তম, সহজতম এবং সবচেয়ে মার্জিত উপায় কোনটি bool?
আমার এমন একটি রয়েছে stringযা "0" বা "1" হতে পারে এবং এটি গ্যারান্টিযুক্ত যে এটি অন্য কিছু হবে না।
সুতরাং প্রশ্নটি হ'ল: এটিকে রূপান্তর করার সর্বোত্তম, সহজতম এবং সবচেয়ে মার্জিত উপায় কোনটি bool?
উত্তর:
সত্যিই বেশ সহজ:
bool b = str == "1";
এই প্রশ্নের সুনির্দিষ্ট প্রয়োজনগুলি উপেক্ষা করা, এবং এটি কখনই একটি বুলের কাছে স্ট্রিং to ালাই ভাল ধারণা নয়, তবে একটি উপায় রূপান্তর শ্রেণিতে ToBoolean () পদ্ধতি ব্যবহার করা হবে :
bool val = Convert.ToBoolean("true");
বা আপনি যে অদ্ভুত ম্যাপিং করছেন তা করার জন্য একটি এক্সটেনশন পদ্ধতি:
public static class StringExtensions
{
public static bool ToBoolean(this string value)
{
switch (value.ToLower())
{
case "true":
return true;
case "t":
return true;
case "1":
return true;
case "0":
return false;
case "false":
return false;
case "f":
return false;
default:
throw new InvalidCastException("You can't cast that value to a bool!");
}
}
}
FormatExceptionমত Convert.ToBoolean ।
আমি জানি এটি আপনার প্রশ্নের উত্তর দেয় না, তবে কেবল অন্য লোকেদের সহায়তা করার জন্য। যদি আপনি "সত্য" বা "মিথ্যা" স্ট্রিংগুলিকে বুলিয়ান রূপান্তর করতে চেষ্টা করছেন:
বুলিয়ান. পার্স চেষ্টা করুন
bool val = Boolean.Parse("true"); ==> true
bool val = Boolean.Parse("True"); ==> true
bool val = Boolean.Parse("TRUE"); ==> true
bool val = Boolean.Parse("False"); ==> false
bool val = Boolean.Parse("1"); ==> Exception!
bool val = Boolean.Parse("diffstring"); ==> Exception!
bool b = str.Equals("1")? true : false;
বা আরও ভাল, নীচে একটি মন্তব্যে পরামর্শ হিসাবে:
bool b = str.Equals("1");
x ? true : falseহাস্যকর বলে বিবেচনা করি ।
bool b = str.Equals("1") প্রথম নজরে সূক্ষ্ম এবং আরও স্বজ্ঞাত কাজ করে।
strনাল হয় এবং আপনি নুলকে মিথ্যা হিসাবে সমাধান করতে চান তেমন স্বজ্ঞাত নয় ।
আমি আরও কিছুটা এক্সটেনসিবল কিছু করেছিলাম, মোহাম্মদ সিপাহাভান্ডের ধারণার উপর পিগিব্যাকিং:
public static bool ToBoolean(this string s)
{
string[] trueStrings = { "1", "y" , "yes" , "true" };
string[] falseStrings = { "0", "n", "no", "false" };
if (trueStrings.Contains(s, StringComparer.OrdinalIgnoreCase))
return true;
if (falseStrings.Contains(s, StringComparer.OrdinalIgnoreCase))
return false;
throw new InvalidCastException("only the following are supported for converting strings to boolean: "
+ string.Join(",", trueStrings)
+ " and "
+ string.Join(",", falseStrings));
}
আমি নীচের কোডটি ব্যবহার করে একটি স্ট্রিং বুলিয়ান রূপান্তর করতে পারি।
Convert.ToBoolean(Convert.ToInt32(myString));
বুল রূপান্তরকরণের সবচেয়ে ক্ষমাশীল স্ট্রিংয়ের এখানে আমার প্রচেষ্টা যা এখনও কার্যকর, মূলত কেবল প্রথম অক্ষরটিকেই সরিয়ে রেখে।
public static class StringHelpers
{
/// <summary>
/// Convert string to boolean, in a forgiving way.
/// </summary>
/// <param name="stringVal">String that should either be "True", "False", "Yes", "No", "T", "F", "Y", "N", "1", "0"</param>
/// <returns>If the trimmed string is any of the legal values that can be construed as "true", it returns true; False otherwise;</returns>
public static bool ToBoolFuzzy(this string stringVal)
{
string normalizedString = (stringVal?.Trim() ?? "false").ToLowerInvariant();
bool result = (normalizedString.StartsWith("y")
|| normalizedString.StartsWith("t")
|| normalizedString.StartsWith("1"));
return result;
}
}
private static readonly ICollection<string> PositiveList = new Collection<string> { "Y", "Yes", "T", "True", "1", "OK" };
public static bool ToBoolean(this string input)
{
return input != null && PositiveList.Any(λ => λ.Equals(input, StringComparison.OrdinalIgnoreCase));
}
আমি এটি ব্যবহার:
public static bool ToBoolean(this string input)
{
//Account for a string that does not need to be processed
if (string.IsNullOrEmpty(input))
return false;
return (input.Trim().ToLower() == "true") || (input.Trim() == "1");
}
আমি এক্সটেনশন পদ্ধতি পছন্দ করি এবং এটিই আমি ব্যবহার করি ...
static class StringHelpers
{
public static bool ToBoolean(this String input, out bool output)
{
//Set the default return value
output = false;
//Account for a string that does not need to be processed
if (input == null || input.Length < 1)
return false;
if ((input.Trim().ToLower() == "true") || (input.Trim() == "1"))
output = true;
else if ((input.Trim().ToLower() == "false") || (input.Trim() == "0"))
output = false;
else
return false;
//Return success
return true;
}
}
তারপরে এটি ব্যবহার করতে ঠিক এমন কিছু করুন ...
bool b;
bool myValue;
data = "1";
if (!data.ToBoolean(out b))
throw new InvalidCastException("Could not cast to bool value from data '" + data + "'.");
else
myValue = b; //myValue is True
যদি আপনি পরীক্ষা করতে চান যে কোনও স্ট্রিং কোনও ছোঁড়া ব্যতিক্রম ছাড়াই বৈধ বুলিয়ান কিনা আপনি এটি চেষ্টা করতে পারেন:
string stringToBool1 = "true";
string stringToBool2 = "1";
bool value1;
if(bool.TryParse(stringToBool1, out value1))
{
MessageBox.Show(stringToBool1 + " is Boolean");
}
else
{
MessageBox.Show(stringToBool1 + " is not Boolean");
}
আউটপুট is Boolean
এবং স্ট্রিংটোবুল 2 এর আউটপুট: 'বুলিয়ান নয়'