C# में स्ट्रिंग को उल्टा करने के कई तरीके हैं। यहां लूप-आधारित दृष्टिकोण दिखाया गया है।
उदाहरण: while लूप का उपयोग
using System;
class Demo {
static void Main() {
string myStr, rev;
myStr = "Tom";
rev = "";
Console.WriteLine("String is {0}", myStr);
// स्ट्रिंग की लंबाई खोजें
int len = myStr.Length - 1;
// अंत से शुरुआत तक लूप
while (len >= 0) {
rev = rev + myStr[len];
len--;
}
Console.WriteLine("Reversed String is {0}", rev);
Console.ReadLine();
}
}
आउटपुट
String is Tom Reversed String is moT
बेहतर दृष्टिकोण: LINQ का उपयोग
using System.Linq; string str = "Tom"; string reversed = new string(str.Reverse().ToArray()); Console.WriteLine(reversed); // moT
StringBuilder के साथ (प्रदर्शन के लिए)
using System.Text;
string str = "Tom";
var sb = new StringBuilder();
for (int i = str.Length - 1; i >= 0; i--) {
sb.Append(str[i]);
}
string reversed = sb.ToString();
एक्सटेंशन मेथड के रूप में
public static class StringExtensions {
public static string Reverse(this string str) {
if (string.IsNullOrEmpty(str)) return str;
char[] arr = str.ToCharArray();
Array.Reverse(arr);
return new string(arr);
}
}
// उपयोग
string reversed = "Hello".Reverse(); // "olleH"
महत्वपूर्ण विचार
- स्ट्रिंग्स C# में अपरिवर्तनीय (immutable) हैं - प्रत्येक कन्कैटनेशन नई स्ट्रिंग बनाता है।
- लूप में कन्कैटनेशन (
rev = rev + c) O(n²) है -StringBuilderयाArray.Reverseउपयोग करें। - यूनिकोड सरोगेट पेयर्स (इमोजी, दुर्लभ कैरेक्टर्स) के लिए
StringInfoक्लास उपयोग करें।
सरोगेट पेयर्स को सही ढंग से संभालना
using System.Globalization; string str = "👋🌍"; // इमोजी var enumerator = StringInfo.GetTextElementEnumerator(str); var elements = new List(); while (enumerator.MoveNext()) elements.Add(enumerator.GetTextElement()); elements.Reverse(); string reversed = string.Concat(elements); // सही: "🌍👋"