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.Split
is efficient for simple cases.Regex.Split
is 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.Split
for simple string-based splits. - Use
Regex.Split
for case insensitivity or regex patterns. - Always handle edge cases (e.g., empty delimiters, no matches).