To split a string by another string (not just a single character) in C#, you can use the string.Split method with a string array delimiter. Below are detailed explanations and examples:
1. Basic String Splitting
Use string.Split with a string delimiter and specify StringSplitOptions.
Syntax:
string[] result = input.Split(
new[] { "delimiter" },
StringSplitOptions.None // or StringSplitOptions.RemoveEmptyEntries
);
Example 1: Split by a string delimiter
using System;
class Program
{
static void Main()
{
string input = "apple--banana--cherry";
string[] delimiter = { "--" };
string[] result = input.Split(delimiter, StringSplitOptions.None);
foreach (string item in result)
{
Console.WriteLine(item);
}
}
}
Output:
apple
banana
cherry
2. Handling Empty Entries
Use StringSplitOptions.RemoveEmptyEntries to exclude empty results when delimiters are consecutive or at the start/end.
Example 2: Remove empty entries
string input = "---Hello---World---";
string[] delimiter = { "---" };
string[] result = input.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
// Result: ["Hello", "World"]
3. Multiple String Delimiters
Split using multiple string delimiters by passing an array of strings.
Example 3: Split by multiple delimiters
string input = "apple123banana456cherry";
string[] delimiters = { "123", "456" };
string[] result = input.Split(delimiters, StringSplitOptions.None);
// Result: ["apple", "banana", "cherry"]
4. Case-Insensitive Splitting
For case-insensitive splits, use Regex.Split with RegexOptions.IgnoreCase:
Example 4: Case-insensitive split
using System.Text.RegularExpressions;
string input = "HelloWORLDhello";
string pattern = "world";
// Split on "world" (case-insensitive)
string[] result = Regex.Split(input, pattern, RegexOptions.IgnoreCase);
// Result: ["Hello", "hello"]
5. Edge Cases
- Empty Delimiter: Splitting by an empty string (
"") throws anArgumentException. - No Matches: If the delimiter isn’t found, the result is an array with the original string.
6. Performance Considerations
string.Splitis efficient for simple cases.Regex.Splitis slower but offers flexibility (e.g., patterns, case insensitivity).
Summary
| Method | Use Case | Example |
|---|---|---|
string.Split | Simple splits with string delimiters. | Split(new[] { "--" }, options) |
Regex.Split | Complex splits (case-insensitive, regex patterns). | Regex.Split(input, "pattern", options) |
| Multiple Delimiters | Split by multiple strings. | Split(new[] { "123", "456" }, options) |
Full Example Code
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
// Example 1: Basic split
string input1 = "apple--banana--cherry";
string[] result1 = input1.Split(new[] { "--" }, StringSplitOptions.None);
Console.WriteLine("Example 1: " + string.Join(", ", result1)); // apple, banana, cherry
// Example 2: Remove empty entries
string input2 = "---Hello---World---";
string[] result2 = input2.Split(new[] { "---" }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("Example 2: " + string.Join(", ", result2)); // Hello, World
// Example 3: Case-insensitive split with Regex
string input3 = "HelloWORLDhello";
string[] result3 = Regex.Split(input3, "world", RegexOptions.IgnoreCase);
Console.WriteLine("Example 3: " + string.Join(", ", result3)); // Hello, hello
}
}
Key Notes
- Use
string.Splitfor simple string-based splits. - Use
Regex.Splitfor case insensitivity or regex patterns. - Always handle edge cases (e.g., empty delimiters, no matches).