C# में कई स्ट्रिंग्स को एक विभाजक (delimiter) के साथ जोड़कर एकल स्ट्रिंग बनाने के लिए string.Join() मेथड का उपयोग किया जाता है। यह सरणी, सूची, या किसी भी IEnumerable<string> के साथ काम करता है।
उदाहरण
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
// स्ट्रिंग सूची
List items = new List { "water", "food", "air" };
// कॉमा से जोड़ें
string result = string.Join(",", items);
Console.WriteLine($"मूल सूची: [{string.Join(", ", items)}]");
Console.WriteLine($"जुड़ी स्ट्रिंग: {result}");
// विभिन्न विभाजक
Console.WriteLine($"\nविभिन्न विभाजक:");
Console.WriteLine($"स्पेस: '{string.Join(" ", items)}'");
Console.WriteLine($"सेमिकोलन: '{string.Join(";", items)}'");
Console.WriteLine($"पाइप: '{string.Join(" | ", items)}'");
Console.WriteLine($"नई लाइन: '{string.Join(Environment.NewLine, items)}'");
}
}
आउटपुट
मूल सूची: [water, food, air] जुड़ी स्ट्रिंग: water,food,air विभिन्न विभाजक: स्पेस: 'water food air' सेमिकोलन: 'water;food;air' पाइप: 'water | food | air' नई लाइन: 'water food air'
string.Join() ओवरलोड्स
| ओवरलोड | विवरण |
|---|---|
Join(string, string[]) | स्ट्रिंग सरणी |
Join(string, IEnumerable<string>) | कोई भी स्ट्रिंग अनुक्रम (.NET Core / .NET 5+) |
Join(string, object[]) | ऑब्जेक्ट सरणी (ToString() कॉल करता है) |
Join(char, string[]) | कैरेक्टर विभाजक |
Join(string, params string[]) | पैरामीटर सरणी |
विभिन्न डेटा प्रकारों के साथ उपयोग
using System;
using System.Collections.Generic;
using System.Linq;
public class Demo
{
public static void Main()
{
// इंटीजर सरणी
int[] numbers = { 1, 2, 3, 4, 5 };
Console.WriteLine($"इंट सरणी: {string.Join(", ", numbers)}");
// ऑब्जेक्ट सरणी (ToString स्वचालित)
object[] mixed = { "Text", 123, true, 45.67, DateTime.Now };
Console.WriteLine($"मिश्रित: {string.Join(" | ", mixed)}");
// कस्टम ऑब्जेक्ट्स (ToString ओवरराइड के साथ)
var people = new[]
{
new { Name = "अमित", Age = 25 },
new { Name = "प्रिया", Age = 30 }
};
Console.WriteLine($"ऑब्जेक्ट्स: {string.Join(", ", people)}");
// LINQ के साथ फ़िल्टर/ट्रांसफॉर्म
var adults = people.Where(p => p.Age >= 25)
.Select(p => p.Name);
Console.WriteLine($"वयस्क नाम: {string.Join(", ", adults)}");
}
}
आउटपुट
इंट सरणी: 1, 2, 3, 4, 5
मिश्रित: Text | 123 | True | 45.67 | 1/15/2024 2:30:45 PM
ऑब्जेक्ट्स: { Name = अमित, Age = 25 }, { Name = प्रिया, Age = 30 }
वयस्क नाम: अमित, प्रिया
Join() बनाम StringBuilder
using System;
using System.Text;
using System.Diagnostics;
public class Demo
{
public static void Main()
{
string[] words = new string[10000];
for (int i = 0; i < words.Length; i++)
words[i] = $"Word{i}";
// string.Join
var sw = Stopwatch.StartNew();
string joined = string.Join(",", words);
Console.WriteLine($"string.Join: {sw.ElapsedMilliseconds} ms, लंबाई: {joined.Length}");
// StringBuilder
sw.Restart();
var sb = new StringBuilder();
for (int i = 0; i < words.Length; i++)
{
if (i > 0) sb.Append(",");
sb.Append(words[i]);
}
string built = sb.ToString();
Console.WriteLine($"StringBuilder: {sw.ElapsedMilliseconds} ms, लंबाई: {built.Length}");
Console.WriteLine($"समान: {joined == built}");
}
}
आउटपुट
string.Join: 2 ms, लंबाई: 68889 StringBuilder: 3 ms, लंबाई: 68889 समान: True
उलटा संक्रिया: Split()
string csv = "water,food,air";
string[] parts = csv.Split(',');
// या एकाधिक विभाजक
string[] parts2 = csv.Split(new[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"विभाजित: [{string.Join(" | ", parts)}]");
महत्वपूर्ण बिंदु
string.Join()nullविभाजक के लिएArgumentNullExceptionफेंकता है- संग्रह में
nullतत्व खाली स्ट्रिंग के रूप में व्यवहार किए जाते हैं - खाली संग्रह के लिए खाली स्ट्रिंग (
"") लौटाता है params string[]ओवरलोड के साथ व्यक्तिगत स्ट्रिंग्स पास कर सकते हैं:string.Join(",", "a", "b", "c")- प्रदर्शन के लिए अनुकूलित है - आंतरिक रूप से
StringBuilderउपयोग करता है String.Split()विपरीत संक्रिया है