Как разбить строку на две части, используя символьный разделитель в C #? - PullRequest
6 голосов
/ 22 мая 2011

Каков наилучший способ разбить строку на две части, используя разделитель из одного символа?

Строка должна быть разбита на первый экземпляр разделителя. Метод должен учитывать производительность. Не следует предполагать, что в строке существует разделитель, что в строке есть любые символы и т. Д .; должен быть универсальным кодом, который вы можете просто подключить, куда вам нужно.

(Мне всегда требуется несколько минут, чтобы переписать подобные вещи, когда мне это нужно, поэтому я решил задать вопрос)

Ответы [ 4 ]

8 голосов
/ 22 мая 2011

Если вы действительно хотите получить только два результата, используйте метод разделения строк со вторым параметром:

string[] words = myString.Split(new char[]{' '}, 2);
3 голосов
/ 22 мая 2011
var part1 = myString.SubString(0, myString.IndexOf(''));
var part2 = myString.SubString(myString.IndexOf(''), myString.Lenght);
0 голосов
/ 22 мая 2011

(Мне всегда требуется несколько минут, чтобы переписать подобные вещи, когда мне это нужно, поэтому я подумал, что задам вопрос)

Если вам это нужночасто вы можете преобразовать свой предпочтительный способ сделать это в метод расширения .По предложению Теомана Сойгула:

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) };
  }
}
0 голосов
/ 22 мая 2011
    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;
    }
...