কীভাবে একটি স্টলে স্টলে রূপান্তর করতে হয়


90

আমার এমন একটি রয়েছে stringযা "0" বা "1" হতে পারে এবং এটি গ্যারান্টিযুক্ত যে এটি অন্য কিছু হবে না।

সুতরাং প্রশ্নটি হ'ল: এটিকে রূপান্তর করার সর্বোত্তম, সহজতম এবং সবচেয়ে মার্জিত উপায় কোনটি bool?


4
কোনো অপ্রত্যাশিত মান ইনপুট হতে পারেন, TryParse (ব্যবহার করতে বিবেচনা stackoverflow.com/questions/18329001/... )
— মাইকেল Freidgeim

উত্তর:



79

এই প্রশ্নের সুনির্দিষ্ট প্রয়োজনগুলি উপেক্ষা করা, এবং এটি কখনই একটি বুলের কাছে স্ট্রিং 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!");
        }
    }
}

4
Convert.ToBoolean আচরণ দেখানো stackoverflow.com/questions/7031964/...
— মাইকেল Freidgeim

4
অনুভব Boolean.TryParse বাঞ্ছনীয় যখন মান অনেকটা যেমন নিক্ষেপ না রূপান্তরিত করার জন্য দরকার FormatExceptionমত Convert.ToBoolean ।
— ব্যবহারকারী 3613932

48

আমি জানি এটি আপনার প্রশ্নের উত্তর দেয় না, তবে কেবল অন্য লোকেদের সহায়তা করার জন্য। যদি আপনি "সত্য" বা "মিথ্যা" স্ট্রিংগুলিকে বুলিয়ান রূপান্তর করতে চেষ্টা করছেন:

বুলিয়ান. পার্স চেষ্টা করুন

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!

কিছু এক্সএমএল ডেটা পড়ার জন্য পাওয়ারশেল স্ক্রিপ্টের জন্য এটি প্রয়োজন এবং এটি নিখুঁত!
— অল্টারনেটেক্স

20
bool b = str.Equals("1")? true : false;

বা আরও ভাল, নীচে একটি মন্তব্যে পরামর্শ হিসাবে:

bool b = str.Equals("1");

39
আমি ফর্মের যে কোনও কিছুকে x ? true : falseহাস্যকর বলে বিবেচনা করি ।
— কেন্ডাল ফ্রে

4
bool b = str.Equals("1") প্রথম নজরে সূক্ষ্ম এবং আরও স্বজ্ঞাত কাজ করে।
— এরিক ফিলিপস

@ এরিক ফিলিপস যখন আপনার স্ট্রিং strনাল হয় এবং আপনি নুলকে মিথ্যা হিসাবে সমাধান করতে চান তেমন স্বজ্ঞাত নয় ।
— মাইকটাইভি

7

আমি আরও কিছুটা এক্সটেনসিবল কিছু করেছিলাম, মোহাম্মদ সিপাহাভান্ডের ধারণার উপর পিগিব্যাকিং:

    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));
    }

5

আমি নীচের কোডটি ব্যবহার করে একটি স্ট্রিং বুলিয়ান রূপান্তর করতে পারি।

Convert.ToBoolean(Convert.ToInt32(myString));

কনভার্টটি কল করা অপ্রয়োজনীয় o আপনি যদি অন্যান্য কেসগুলি বিবেচনা করতে চান তবে var ট্রু = রূপান্তর করুন o টুবুলিয়ান ("সত্য") == সত্য && রূপান্তর করুন o টুবুলিয়ান ("1"); // উভয় সত্য।
— TamusJRoyce

মোহাম্মদ সিপাহাভন্ড দেখুন মাইকেল ফ্রিজিম মন্তব্যের উত্তর!
— TamusJRoyce

3

বুল রূপান্তরকরণের সবচেয়ে ক্ষমাশীল স্ট্রিংয়ের এখানে আমার প্রচেষ্টা যা এখনও কার্যকর, মূলত কেবল প্রথম অক্ষরটিকেই সরিয়ে রেখে।

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;
    }
}


1

আমি এটি ব্যবহার:

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");
        }

0

আমি এক্সটেনশন পদ্ধতি পছন্দ করি এবং এটিই আমি ব্যবহার করি ...

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

-1

যদি আপনি পরীক্ষা করতে চান যে কোনও স্ট্রিং কোনও ছোঁড়া ব্যতিক্রম ছাড়াই বৈধ বুলিয়ান কিনা আপনি এটি চেষ্টা করতে পারেন:

    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 এর আউটপুট: 'বুলিয়ান নয়'

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.