Как разделить строку на две части с помощью разделителя символов в c#?

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

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

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

4 ответов


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

string[] words = myString.Split(new char[]{' '}, 2);

var part1 = myString.SubString(0, myString.IndexOf(''));
var part2 = myString.SubString(myString.IndexOf(''), myString.Lenght);

    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;
    }

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

Если вам это нужно часто, вы можете преобразовать предпочтительный способ сделать это в метод расширения. Основанные на внушении Теобан 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) };
  }
}