Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में स्ट्रिंग में शब्द की घटनाओं की गिनती

स्ट्रिंग में किसी विशिष्ट शब्द/सबस्ट्रिंग की घटनाओं (occurrences) की गिनती के लिए IndexOf मेथड का उपयोग करके लूप में खोज की जाती है।

उदाहरण

using System;

class Program {
    static void Main() {
        string str = "Hello World! Hello!";
        Console.WriteLine("Occurrence: " + Check.CheckOccurrences(str, "Hello"));
    }
}

public static class Check {
    public static int CheckOccurrences(string str1, string pattern) {
        int count = 0;
        int index = 0;

        while ((index = str1.IndexOf(pattern, index)) != -1) {
            index += pattern.Length; // मिले पैटर्न के बाद से खोज जारी रखें
            count++;
        }
        return count;
    }
}

आउटपुट

Occurrence: 2

एल्गोरिदम व्याख्या

  1. IndexOf(pattern, startIndex) - startIndex से पैटर्न खोजता है।
  2. यदि मिलता है (≠ -1), काउंट बढ़ाएं और startIndex को मिली स्थिति + पैटर्न लंबाई पर ले जाएं।
  3. नहीं मिलने तक (-1) दोहराएं।

ओवरलैपिंग मिलान (उदाहरण: "aaa" में "aa")

उपरोक्त कोड ओवरलैपिंग नहीं गिनता ("aaa" में "aa" = 1)। ओवरलैपिंग के लिए:

public static int CountOverlapping(string str, string pattern) {
    int count = 0;
    for (int i = 0; i <= str.Length - pattern.Length; i++) {
        if (str.Substring(i, pattern.Length) == pattern)
            count++;
    }
    return count;
}
// "aaa" में "aa" → 2 (स्थिति 0 और 1)

केस-इनसेंसिटिव खोज

int count = 0;
int index = 0;
while ((index = str.IndexOf(pattern, index, StringComparison.OrdinalIgnoreCase)) != -1) {
    index += pattern.Length;
    count++;
}

Regex के साथ (शब्द सीमाओं के साथ)

using System.Text.RegularExpressions;

int count = Regex.Matches(str, @"\bHello\b", RegexOptions.IgnoreCase).Count;
// "HelloWorld" में "Hello" नहीं गिना जाएगा (शब्द सीमा \b के कारण)

LINQ के साथ (सरल लेकिन कम कुशल)

int count = str.Split(new[] { ' ', '.', '!', '?', ',' }, StringSplitOptions.RemoveEmptyEntries)
               .Count(w => w.Equals("Hello", StringComparison.OrdinalIgnoreCase));

मुख्य बिंदु

  • IndexOf आधारित दृष्टिकोण O(n) है और ओवरलैपिंग नहीं गिनता।
  • शब्द-स्तरीय गिनती के लिए Split या Regex \b उपयोग करें।
  • केस-सेंसिटिविटी आवश्यकतानुसार कॉन्फ़िगर करें।
  • बड़े टेक्स्ट के लिए StringBuilder या स्ट्रीमिंग दृष्टिकोण विचार करें।
  1. - JavaScript में सरणी में शब्द की सभी घटनाओं को ढूंढना

    हमें एक JavaScript फ़ंक्शन लिखना है जो literals की एक सरणी को पहले तर्क के रूप में और एक स्ट्रिंग को दूसरे तर्क के रूप में लेता है। हमारा फ़ंक्शन उस स्ट्रिंग की संख्या को लौटाना चाहिए जो दूसरी तर्क द्वारा प्रदान की गई है, सरणी में कहीं भी दिखाई देती है। उदाहरण इसके लिए कोड होगा - { return

  1. Android में स्ट्रिंग के प्रत्येक कैरेक्टर की घटनाओं को कैसे गिनें? Android में स्ट्रिंग के प्रत्येक कैरेक्टर की घटनाओं को कैसे गिनें?

    स्ट्रिंग में प्रत्येक कैरेक्टर की घटनाएं गिनना यह उदाहरण दर्शाता है कि Android में स्ट्रिंग में प्रत्येक कैरेक्टर की घटनाओं (occurrences) को कैसे गिना जाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और प्रोजेक्ट बनाएं। चरण 2: लेआउट फ़ाइल (res/layout/activity_main.

  1. एक्सेल मास्टर करें: स्ट्रिंग और रेंज में वर्ण या शब्द गिनें जल्दी एक्सेल मास्टर करें: स्ट्रिंग और रेंज में वर्ण या शब्द गिनें जल्दी

    इस ट्यूटोरियल में, हम एक विशेष स्ट्रिंग और एक्सेल में स्ट्रिंग रेंज में एक वर्ण या शब्द की घटनाओं की गणना पर चर्चा करेंगे। अक्सर, हमें एक सेल में या बड़ी मात्रा में डेटा वाले डेटा रेंज में वर्ण की आवृत्ति की गणना करनी होती है। इसलिए, इस गिनती को आसान बनाने के लिए, हम इस लेख में कुछ आसानी से उपयोग हो