반응형
문자열에서 문자의 발생 횟수
이 질문에 이미 답변이 있습니다.
&
다음 문자열 과 같은 특정 문자의 발생 횟수를 얻으려고 합니다.
string test = "key1=value1&key2=value2&key3=value3";
위의 테스트 문자열 변수에 2 개의 앰퍼샌드 (&)가 있는지 어떻게 확인합니까?
다음과 같이 할 수 있습니다.
int count = test.Split('&').Length - 1;
또는 LINQ 사용 :
test.Count(x => x == '&');
LINQ
모든 것을 할 수 있기 때문에 ... :
string test = "key1=value1&key2=value2&key3=value3";
var count = test.Where(x => x == '&').Count();
또는 원하는 경우 Count
조건자를 사용하는 오버로드를 사용할 수 있습니다 .
var count = test.Count(x => x == '&');
가장 간단하고 효율적인 방법은 문자열의 문자를 간단히 반복하는 것입니다.
int cnt = 0;
foreach (char c in test) {
if (c == '&') cnt++;
}
Linq 확장을 사용하여 더 간단하고 거의 효율적인 버전을 만들 수 있습니다. 약간 더 많은 오버 헤드가 있지만 여전히 놀랍게도 성능 루프에 가깝습니다.
int cnt = test.Count(c => c == '&');
그런 다음 오래된 Replace
트릭이 있지만 루핑이 어색하거나 (SQL) 느린 (VBScript) 언어에 더 적합합니다.
int cnt = test.Length - test.Replace("&", "").Length;
왜 정규식을 사용합니까? String
구현 IEnumerable<char>
하므로 LINQ를 사용할 수 있습니다.
test.Count(c => c == '&')
문자열 예제는 GET의 쿼리 문자열 부분과 유사합니다. 그렇다면 HttpContext가 도움이 될 것입니다.
int numberOfArgs = HttpContext.Current.QueryString.Count;
QueryString으로 수행 할 수있는 작업에 대한 자세한 내용은 NameValueCollection을 참조하십시오.
다음은 모든 답변에서 카운트를 얻는 가장 비효율적 인 방법입니다. 그러나 보너스로 키-값 쌍이 포함 된 사전을 얻을 수 있습니다.
string test = "key1=value1&key2=value2&key3=value3";
var keyValues = Regex.Matches(test, @"([\w\d]+)=([\w\d]+)[&$]*")
.Cast<Match>()
.ToDictionary(m => m.Groups[1].Value, m => m.Groups[2].Value);
var count = keyValues.Count - 1;
참고 URL : https://stackoverflow.com/questions/10391481/number-of-occurrences-of-a-character-in-a-string
반응형
'programing' 카테고리의 다른 글
SIGSTOP과 SIGTSTP의 차이점은 무엇입니까? (0) | 2020.09.01 |
---|---|
SBT에서 "실행"작업으로 응용 프로그램을 실행하기 위해 JVM 최대 힙 크기 "-Xmx"를 지정하는 방법은 무엇입니까? (0) | 2020.08.31 |
AppCompatActivity.onCreate는 동일한 라이브러리 그룹 내에서만 호출 할 수 있습니다. (0) | 2020.08.31 |
$ (this) .serialize () — 값을 추가하는 방법? (0) | 2020.08.31 |
Visual Studio가 열린 문서 및 시작 프로젝트를 기억하지 못함 (0) | 2020.08.31 |