programing

문자열 내에서 문자열이 나타나는 횟수 계산

procenter 2021. 1. 16. 10:41
반응형

문자열 내에서 문자열이 나타나는 횟수 계산


다음과 같은 문자열이 있습니다.

"7, true, NA, false : 67, false, NA, false : 5, false, NA, false : 5, false, NA, false"

내가 원하는 것은 문자열 " true "가 해당 문자열에 나타나는 횟수를 계산하는 것 입니다. 답이 비슷한 것 String.CountAllTheTimesThisStringAppearsInThatString()같지만 왠지 모르겠어요. 도움?


Regex.Matches(input, "true").Count

아마도 가장 효율적인 방법은 아니지만 그것을 수행하는 깔끔한 방법이라고 생각하십시오.

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(CountAllTheTimesThisStringAppearsInThatString("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "true"));
        Console.WriteLine(CountAllTheTimesThisStringAppearsInThatString("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "false"));

    }

    static Int32 CountAllTheTimesThisStringAppearsInThatString(string orig, string find)
    {
        var s2 = orig.Replace(find,"");
        return (orig.Length - s2.Length) / find.Length;
    }
}

정규식은 \btrue\bCasper가 제기하는 '잘못된'문제를 해결하는 것이어야 합니다. 전체 솔루션은 다음과 같습니다.

string searchText = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false";
string regexPattern = @"\btrue\b";
int numberOfTrues = Regex.Matches(searchText, regexPattern).Count;

System.Text.RegularExpressions 네임 스페이스가 파일 맨 위에 포함되어 있는지 확인하십시오.


문자열이 "miscontrue"와 같은 문자열을 포함 할 수 있으면 실패합니다.

   Regex.Matches("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "true").Count;

Linq와 함께 ...

string s = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false";
var count = s.Split(new[] {',', ':'}).Count(s => s == "true" );

여기에서는 LINQ를 사용하여 답변을 과도하게 설계하겠습니다. 계란을 요리하는 방법이 'n'개 이상임을 보여줍니다.

public int countTrue(string data)
{
    string[] splitdata = data.Split(',');

    var results = from p in splitdata
            where p.Contains("true")
            select p;

    return results.Count();
}

이렇게하면 '테스트'에 대한 정규식을 정의해야합니다 !!!

string s = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false";
string[] parts = (new Regex("")).Split(s);
//just do a count on parts

참조 URL : https://stackoverflow.com/questions/3016522/count-the-number-of-times-a-string-appears-within-a-string

반응형