대시 및 공백 문자를 제외한 문자열에서 영숫자가 아닌 문자를 모두 제거하려면 어떻게합니까?
답변
[^a-zA-Z0-9 -]
빈 문자열로 교체하십시오 .
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
str = rgx.Replace(str, "");
답변
RegEx를 사용할 수 있었지만 우아한 솔루션을 제공 할 수는 있지만 성능 문제가 발생할 수 있습니다. 여기에 하나의 해결책이 있습니다.
char[] arr = str.ToCharArray();
arr = Array.FindAll<char>(arr, (c => (char.IsLetterOrDigit(c)
|| char.IsWhiteSpace(c)
|| c == '-')));
str = new string(arr);
컴팩트 프레임 워크 (FindAll이없는)를 사용하는 경우
FindAll을 1로 교체
char[] arr = str.Where(c => (char.IsLetterOrDigit(c) ||
char.IsWhiteSpace(c) ||
c == '-')).ToArray();
str = new string(arr);
답변
당신은 시도 할 수 있습니다:
string s1 = Regex.Replace(s, "[^A-Za-z0-9 -]", "");
s
당신의 줄은 어디에 있습니까 ?
답변
System.Linq 사용
string withOutSpecialCharacters = new string(stringWithSpecialCharacters.Where(c =>char.IsLetterOrDigit(c) || char.IsWhiteSpace(c) || c == '-').ToArray());
답변
정규식은 [^\w\s\-]*
다음과 같습니다.
\s
텍스트에 탭이있을 수 있으므로 공백 ( ) 대신 사용하는 것이 좋습니다 .
답변
이 질문에 대한 답변을 바탕으로 정적 클래스를 만들고 추가했습니다. 일부 사람들에게는 유용 할 것이라고 생각했습니다.
public static class RegexConvert
{
public static string ToAlphaNumericOnly(this string input)
{
Regex rgx = new Regex("[^a-zA-Z0-9]");
return rgx.Replace(input, "");
}
public static string ToAlphaOnly(this string input)
{
Regex rgx = new Regex("[^a-zA-Z]");
return rgx.Replace(input, "");
}
public static string ToNumericOnly(this string input)
{
Regex rgx = new Regex("[^0-9]");
return rgx.Replace(input, "");
}
}
그런 다음 방법을 다음과 같이 사용할 수 있습니다.
string example = "asdf1234!@#$";
string alphanumeric = example.ToAlphaNumericOnly();
string alpha = example.ToAlphaOnly();
string numeric = example.ToNumericOnly();
답변
빠른 것을 원하십니까?
public static class StringExtensions
{
public static string ToAlphaNumeric(this string self, params char[] allowedCharacters)
{
return new string(Array.FindAll(self.ToCharArray(), c => char.IsLetterOrDigit(c) || allowedCharacters.Contains(c)));
}
}
이를 통해 허용하려는 문자를 지정할 수 있습니다.