[asp.net] 문자열에서 숫자가 아닌 문자 제거
ASP.NET C #에서 문자열에서 숫자가 아닌 문자를 제거하려는 Im 안녕하세요
즉 40,595 pa
40595로 끝날 것입니다
감사
답변
여러 가지 방법이 있지만 이렇게해야합니다 (정말 큰 문자열에서 어떻게 수행되는지 모르겠습니다).
private static string GetNumbers(string input)
{
return new string(input.Where(c => char.IsDigit(c)).ToArray());
}
답변
정규 표현식에 잘 맞는 것 같습니다.
var s = "40,595 p.a.";
var stripped = Regex.Replace(s, "[^0-9]", "");
"[^0-9]"
로 바꿀 수 @"\D"
있지만 가독성이 마음에 듭니다 [^0-9]
.
답변
확장 방법이 더 나은 접근 방식입니다.
public static string GetNumbers(this string text)
{
text = text ?? string.Empty;
return new string(text.Where(p => char.IsDigit(p)).ToArray());
}
답변
0-9 만 캡처하고 나머지는 버리는 정규식을 사용하십시오. 정규식은 처음에는 많은 비용이 드는 작업입니다. 또는 다음과 같이하십시오.
var sb = new StringBuilder();
var goodChars = "0123456789".ToCharArray();
var input = "40,595";
foreach(var c in input)
{
if(goodChars.IndexOf(c) >= 0)
sb.Append(c);
}
var output = sb.ToString();
제가 생각하기에 그런 것 같지만 컴파일하지 않았습니다 ..
LINQ는 Fredrik이 말했듯이
답변
또 다른 옵션 …
private static string RemoveNonNumberDigitsAndCharacters(string text)
{
var numericChars = "0123456789,.".ToCharArray();
return new String(text.Where(c => numericChars.Any(n => n == c)).ToArray());
}
답변
음, 숫자가 0123456789입니다. 맞죠? 문자열을 문자 단위로 탐색하십시오. 문자가 숫자이면 임시 문자열 끝에 붙이고, 그렇지 않으면 무시하십시오. C # 문자열에 사용할 수있는 다른 도우미 메서드가있을 수 있지만 이는 모든 곳에서 작동하는 일반적인 접근 방식입니다.
답변
다음은 정규 표현식을 사용하는 코드입니다.
string str = "40,595 p.a.";
StringBuilder convert = new StringBuilder();
string pattern = @"\d+";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(str);
foreach (Match match in matches)
{
convert.Append(match.Groups[0].ToString());
}
int value = Convert.ToInt32(convert.ToString());