.NET에서 주어진 문자열이 숫자인지 확인하는 방법은 무엇입니까?.NET에서 문자열이 숫자인지 확인하는 방법은 무엇입니까?
TEST1은 - 문자열
1232입니다 -입니다 수
테스트 - 문자열에게 있습니다
tes3t은 -이다 문자열
4567 - - 문자열
2323k입니다 수
입니다시스템 기능을 사용하여 어떻게 할 수 있습니까?
.NET에서 주어진 문자열이 숫자인지 확인하는 방법은 무엇입니까?.NET에서 문자열이 숫자인지 확인하는 방법은 무엇입니까?
TEST1은 - 문자열
1232입니다 -입니다 수
테스트 - 문자열에게 있습니다
tes3t은 -이다 문자열
4567 - - 문자열
2323k입니다 수
입니다시스템 기능을 사용하여 어떻게 할 수 있습니까?
ontputInt 값이 0 인 경우 int.TryParse (inputString, out outputInt)를 사용하면 숫자가 아닙니다.
Int32.TryParse는 구문 분석 된 값을 가진 bool plus out 매개 변수를 리턴합니다 (작동하지 않으면 기본값). bool 결과를 확인하여 다른 것이 효과가 있는지 확인하십시오. "0"이 거부됩니다. –
길이가 지정되지 않은 경우 문자가 맞는지 여부를 확인하려면 문자 비교로 오래된 문자를 사용해야합니다.
당신이 비트의 고정 된 수의 정수가 될 것으로 예상하는 경우
는 32 비트 정수,은 다음 Int32.TryParse 뭔가를 시도 할 수 있습니다 말한다.
각 문자를 테스트하는 간단한 루프를 작성할 수 있습니다.
bool IsNumber(string s)
{
foreach (char c in s)
{
if (!Char.IsDigit(c))
return false;
}
return s.Any();
}
또는 LINQ를 사용할 수 있습니다. 당신이 문자열은 모든 문자가 숫자 것을있는 것보다 int
형식으로 표현 될 수있는 경우에 더 관심이 있다면
bool IsNumber(string s)
{
return s.Any() && s.All(c => Char.IsDigit(c));
}
, 당신은 int.TryParse()
를 사용할 수 있습니다.
bool IsNumber(string s)
{
int i;
return int.TryParse(s, out i);
}
참고 : 당신은 사람들이 당신을 줄 몇 가지 답변을 받아 시작되지 않는 경우 당신은 많은 도움을받지 않습니다.
왜 각 문자가 숫자인지 아닌지를 확인하고 싶습니까? – V4Vendetta
@ V4Vendette 원래 질문을 살펴보면, 숫자로 간주되는 유일한 경우는 * 모든 숫자가 숫자 인 경우입니다. 그러면 어떻게 모든 숫자를 확인하지 않고 이것을 결정할 수 있습니까? –
모든 문자가 숫자가 (뿐만 아니라 음의 정수에 대한 true가됩니다)
inputString.All(c => IsDigit(c));
또한 당신은 시도 Int32.TryParse
또는 Int64.TryParse
을 사용할 수 있습니다
string pattern = "^[-+]?[0-9]*\.?[0-9]*$";
Regex.IsMatch(inputString, pattern)
+1 : 멋진 혁신 :) – naveen
나는 이것을 좋아한다. 방금 bool이 필요할 때 항상 out 변수를 사용하도록 도청했습니다. 이것은 나를 위해 다음 코드로 변환 : if (productId.All (Char.IsDigit)). 나는 이태리의 우아함을 좋아한다. –
'inputString'이 비어 있으면 첫번째 예제는 실패합니다. –
정규 표현식을 시도 할 경우이 확인됩니다 문자열을 숫자로 변환합니다.
그렇지 않으면, 당신은뿐만 아니라 코드를 다음을 사용 :이 같은
public Boolean IsNumber(String s)
{
foreach (Char ch in s)
{
if (!Char.IsDigit(ch)) return false;
}
return true;
}
사용 int.TryParse
을.
var test = "qwe";
int result;
if(int.TryParse(test, out result))
{
//if test is int you can access it here in result;
}
당신은 여기에 원래 문제의 문자열에 대한 일련의 테스트입니다
int parsed;
if(int.TryParse("is it a number?", out parsed))
사용할 수 있습니다. 숫자 스타일과 문화를 알리는 능력을 가진 오버로드를 사용합니다.
[Test]
public void FalseOnStringyString()
{
var sources = new []{"test1", "test", "tes3t", "2323k"};
foreach (var source in sources)
{
int parsed;
Assert.IsFalse(int.TryParse(source, NumberStyles.Any, CultureInfo.InvariantCulture, out parsed));
}
}
[Test]
public void TrueOnNumberyString()
{
var sources = new[] { "1232", "4567" };
foreach (var source in sources)
{
int parsed;
Assert.IsTrue(int.TryParse(source, NumberStyles.Any, CultureInfo.InvariantCulture, out parsed));
}
}
또 다른 해결책은 Regex를 사용하는 것입니다. 그러나이 경우 메서드는 숫자를 출력하지 않습니다.
[Test]
public void TrueOnNumberyStringRegex()
{
var sources = new[] { "1232", "4567" };
var isNumber = new Regex(@"^\d+$");
foreach (var source in sources)
{
Assert.IsTrue(isNumber.IsMatch(source));
}
}
[Test]
public void FalseOnNumberyStringRegex()
{
var sources = new[] { "test1", "test", "tes3t", "2323k" };
var isNumber = new Regex(@"^\d+$");
foreach (var source in sources)
{
Assert.IsFalse(isNumber.IsMatch(source));
}
}
문자열의 확장 방법과 동일합니다. 이 특별한 가치에 대해 "123.56"응답은 현재의 문화에 달려 있습니다. 여기
class Program
{
static void Main(string[] args)
{
string[] Values = {"123", "someword", "12yu", "123.56" };
foreach(string val in Values)
Console.WriteLine(string.Format("'{0}' - Is number?: {1}",val, val.IsNumber()));
}
}
public static class StringExtension
{
public static bool IsNumber(this String str)
{
double Number;
if (double.TryParse(str, out Number)) return true;
return false;
}
}
int 대 더블 파싱의 경우에는 항상 좋은 사례가 있습니다. 그럼 당신은 독립적 인 문화 구체의 라인을 내려야 만합니다 (.NET에서 많은 것을하지는 않았지만 자바에서는 많은 것을했습니다) – Andez
//public static bool IsAlphaNumeric(string inputString)
//{
// bool alpha = false;
// bool num = false;
// int l;
// try
// {
// foreach (char s in inputString)
// {
// if (!char.IsDigit(s))
// {
// alpha = true;
// }
// else
// {
// num = true;
// }
// }
// if (num == true && alpha == true)
// {
// return true;
// }
// else
// {
// return false;
// }
// }
// catch
// {
// return false;
// }
//}
우리가 간다 : 다음을 사용하여 호출 할 때
public static class StringExtensions
{
public static bool IsDigits(this string input)
{
return input.All(c => !c.IsDigit());
}
public static bool IsDigit(this char input)
{
return (input < '0' || input > '9');
}
}
은, 그것이 사실 반환해야합니다 :
var justAString = "3131445";
var result = justAString.IsDigits();
무엇 1.12''에 대해?'.12'? ,'-32'? 숫자를 정의하십시오 : –
'return str.All (Char.IsDigit); ' – Mohsen