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

C# में कैरेक्टर में सरोगेट कोड है या नहीं जांचें

स्ट्रिंग में निर्दिष्ट पोजिशन पर कैरेक्टर में सरोगेट कोड है या नहीं जांचने के लिए Char.IsSurrogate मेथड का उपयोग करें।

सिंटैक्स

public static bool IsSurrogate(string s, int index);

सरोगेट पेयर्स क्या हैं?

  • Unicode कैरेक्टर्स जो 2 UTF-16 कोड यूनिट्स (हाई सरोगेट + लो सरोगेट) का उपयोग करते हैं
  • BMP (Basic Multilingual Plane) के बाहर के कैरेक्टर्स के लिए: इमोजी, दुर्लभ स्क्रिप्ट्स
  • हाई सरोगेट रेंज: U+D800 से U+DBFF
  • लो सरोगेट रेंज: U+DC00 से U+DFFF

उदाहरण 1: सरोगेट कंटेन करता है

using System;

public class Demo {
    public static void Main() {
        // \uD800 एक हाई सरोगेट है
        string str = new String(new char[] { 'k', 'm', 'g', 't', '\uD800' });
        
        bool res = Char.IsSurrogate(str, 4);  // इंडेक्स 4 पर चेक
        
        if (res)
            Console.WriteLine("Contains Surrogate value!");
        else
            Console.WriteLine("Does not contain Surrogate value!");
    }
}

आउटपुट

Contains Surrogate value!

उदाहरण 2: कोई सरोगेट नहीं

using System;

public class Demo {
    public static void Main() {
        string str = new String(new char[] { 'k', 'm', 'g', 't', 'w' });
        
        bool res = Char.IsSurrogate(str, 4);
        
        if (res)
            Console.WriteLine("Contains Surrogate value!");
        else
            Console.WriteLine("Does not contain Surrogate value!");
    }
}

आउटपुट

Does not contain Surrogate value!

अतिरिक्त सरोगेट चेकिंग मेथड्स

string emoji = "😀";  // U+1F600 - सरोगेट पेयर का उपयोग करता है

// स्ट्रिंग में सरोगेट पेयर है?
Console.WriteLine(Char.IsSurrogatePair(emoji[0], emoji[1]));  // True

// हाई सरोगेट चेक
Console.WriteLine(Char.IsHighSurrogate(emoji[0]));  // True

// लो सरोगेट चेक
Console.WriteLine(Char.IsLowSurrogate(emoji[1]));   // True

// सरोगेट पेयर से कोड पॉइंट प्राप्त करें
int codePoint = Char.ConvertToUtf32(emoji[0], emoji[1]);  // 128512 (0x1F600)

// कोड पॉइंट से सरोगेट पेयर बनाएं
string fromCodePoint = Char.ConvertFromUtf32(128512);  // "😀"

// Rune स्ट्रक्चर (C# 8.0+ / .NET Core 3.0+) - बेहतर Unicode हैंडलिंग
Rune rune = new Rune('😀');
Console.WriteLine(rune.IsValid);  // True
Console.WriteLine(rune.Value);    // 128512

व्यावहारिक उपयोग

public static int CountActualCharacters(string s) {
    int count = 0;
    for (int i = 0; i < s.Length; i++) {
        if (i + 1 < s.Length && Char.IsSurrogatePair(s[i], s[i + 1])) {
            count++;
            i++;  // अगला कैरेक्टर स्किप करें (पेयर का हिस्सा)
        }
        else if (!Char.IsSurrogate(s, i)) {
            count++;  // रेगुलर कैरेक्टर या अनपेयर्ड सरोगेट
        }
    }
    return count;
}

// या .NET Core 3.0+ में सरल:
int charCount = s.EnumerateRunes().Count();
  1. - C# में HashSet में निर्दिष्ट तत्व है या नहीं जांचें

    C# में HashSet किसी विशिष्ट तत्व को रखता है या नहीं, यह जांचने के लिए Contains() मेथड का उपयोग किया जाता है। यह मेथड एक बूलियन मान लौटाता है। उदाहरण 1 using System; using System.Collections.Generic; public class Demo { public static void Main() { HashSet set1 = new HashSet(); se

  1. - C# में आर्मस्ट्रांग संख्या जांचना

    आर्मस्ट्रांग संख्या (Armstrong Number) जिसे नार्सिसिस्टिक संख्या भी कहते हैं, एक ऐसी संख्या है जो अपने अंकों की घातों के योग के बराबर होती है। n अंकों की संख्या के लिए: प्रत्येक अंक की nवीं घात का योग संख्या के बराबर होता है। उदाहरण: 3-अंकीय संख्याओं के लिए 153 = 1³ + 5³ + 3³ = 1 + 125 + 27 = 153 ✓

  1. - Python में स्ट्रिंग का औसत वर्ण मौजूद है या नहीं जांचें

    मान लीजिए हमारे पास एक स्ट्रिंग s है जिसमें अल्फान्यूमेरिक वर्ण हैं, हमें जांचना है कि स्ट्रिंग का औसत वर्ण मौजूद है या नहीं, यदि हां तो वह वर्ण लौटाएं। यहां औसत वर्ण s में प्रत्येक वर्ण के ASCII मानों के औसत का फ्लोर लेकर पाया जा सकता है।तो, यदि इनपुट s = pqrst जैसा है, तो आउटपुट r होगा क्योंकि वर्