문자열을 부울로 변환하는 방법
string
"0"또는 "1"이 될 수있는 a 가 있으며 다른 것은 없을 것입니다.
그래서 질문은 : 이것을 변환하는 가장 좋고 간단하며 가장 우아한 방법은 bool
무엇입니까?
정말 간단합니다.
bool b = str == "1";
이 질문의 특정 요구 사항을 무시하고 문자열을 bool로 캐스팅하는 것은 좋지 않지만 한 가지 방법은 Convert 클래스에서 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!");
}
}
}
나는 이것이 당신의 질문에 대답하는 것이 아니라 단지 다른 사람들을 돕기위한 것임을 압니다. "true"또는 "false"문자열을 부울로 변환하려는 경우 :
Boolean.Parse를 사용해보십시오.
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");
Mohammad Sepahvand의 개념에 따라 조금 더 확장 가능한 것을 만들었습니다.
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));
여기에 여전히 유용한 bool 변환에 대한 가장 관용적 인 문자열에 대한 나의 시도가 있습니다.
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));
}
나는 확장 방법을 좋아하고 이것이 내가 사용하는 방법입니다 ...
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
나는 이것을 사용한다 :
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");
}
예외가 발생하지 않고 문자열이 유효한 부울인지 테스트하려면 다음을 시도하십시오.
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
및 stringToBool2의 출력은 'is not Boolean'입니다.
참고 URL : https://stackoverflow.com/questions/9742724/how-to-convert-a-string-to-a-bool
'developer tip' 카테고리의 다른 글
jQuery를 로컬로 호스팅 할 때의 이점 대 함정 (0) | 2020.10.15 |
---|---|
내일 날짜를 dd-mm-yy 형식으로 얻는 방법 JavaScript (0) | 2020.10.15 |
정규식을 사용하여 문자열이 회문인지 확인하는 방법은 무엇입니까? (0) | 2020.10.15 |
높은 응집력이란 무엇이며 어떻게 사용 / 만드는가? (0) | 2020.10.15 |
emacs는 3 개의 짝수 창으로 분할됩니다. (0) | 2020.10.15 |