如何在c#中使用字符分隔符将字符串拆分为两部分?
使用单字符分隔符将字符串拆分为两部分的最佳方法是什么?如何在c#中使用字符分隔符将字符串拆分为两部分?
该字符串应该在分隔符的第一个实例上分割。该方法应考虑性能。它不应该假定分隔符存在于字符串中,字符串中有任何字符等。应该是通用代码,只要你需要插入即可。
(这总让我几分钟的时间来改写这样的事情,每当我需要它,所以我想我会成为一个问题,因为它)
如果你真的想只有两个结果,使用字符串分割方法与第2个参数:
string[] words = myString.Split(new char[]{' '}, 2);
string[] SplitStringInTwo(string input, char separator)
{
string[] results = new string[2];
if (string.IsNullOrEmpty(input)) return results;
int splitPos = input.IndexOf(separator);
if (splitPos <= 0) return results;
results[0] = input.Substring(0, splitPos);
if (splitPos<input.Length)
results[1] = input.Substring(splitPos + 1);
return results;
}
为什么这么做的时候,已经有一个像slfan这样的方法指出了。 – 2011-05-22 13:15:01
@Roopesh:如果分割字符出现多次? – 2011-05-22 13:17:22
@Karlsen - 有一个选项。检查slfan的更新回复。 – 2011-05-22 14:38:53
var part1 = myString.SubString(0, myString.IndexOf(''));
var part2 = myString.SubString(myString.IndexOf(''), myString.Lenght);
我会先检查字符,以防止第二行代码上出现-1异常。 – 2011-05-22 13:12:55
没错,我只是假设他知道这个字符是事先存在的。 – 2011-05-22 13:18:48
我不能认为char是事先存在的;这是什么使这不是一个完全不重要的问题的一部分。同样,性能方面,这会计算IndexOf两次,对于大字符串来说可能很重要(尽管很小)。另外我认为part2将包含分隔符。 – Rory 2011-05-22 13:24:22
(这总让我几分钟的时间来改写这一类的,每当我需要的东西,所以我以为我会提出一个问题)
如果你需要这个频繁,你可以转换你的首选方式到extension method。基于Teoman Soygul的建议:
public static class StringExtensions
{
public static string[] TwoParts(this String str, char splitCharacter)
{
int splitIndex = str.IndexOf(splitCharacter);
if(splitIndex == -1)
throw new ArgumentException("Split character not found.");
return new string[] {
str.SubString(0, splitIndex),
str.SubString(splitIndex, myString.Lenght) };
}
}
这可能会返回两个以上的部分,而不是一个字符串分成两个。 – 2011-05-22 13:15:58
我添加了另一个版本的String.split,它可以做到这一点。 – slfan 2011-05-22 13:25:42
哦,是的,我总是忘记那个版本的Split() - 这正是我想要的。 – Rory 2011-05-22 13:32:26