Разделить строку на другую строку в С#

Я использовал метод Split() для разделения строк, но это работает, только если вы разделяете строку по символу. Есть ли способ разделить string с другой строкой, являющейся параметром разделения по?

Я попытался преобразовать сплиттер в массив символов, но безуспешно.

Другими словами, я хотел бы разбить string:

THExxQUICKxxBROWNxxFOX

по xx и вернуть массив со значениями:

БЫСТРО, КОРИЧНЕВЫЙ, ЛИС

Ответ 1

Чтобы разбить по строке, вам нужно будет использовать string array overload.

string data = "THExxQUICKxxBROWNxxFOX";

return data.Split(new string[] { "xx" }, StringSplitOptions.None);

Ответ 2

Существует перегрузка Split, которая принимает строки.

"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);

Вы можете использовать любой из этих StringSplitOptions

  • Нет. Возвращаемое значение включает массив элементы, содержащие пустую строку
  • RemoveEmptyEntries - возвращаемое значение не включает элементы массива, которые содержат пустую строку

Итак, если строка "THExxQUICKxxxxBROWNxxFOX", StringSplitOptions.None вернет пустую запись в массиве для части "xxxx", а StringSplitOptions.RemoveEmptyEntries не будет.

Ответ 3

Regex.Split(string, "xx")

это способ, которым я делаю это обычно. Конечно тебе понадобится

using System.Text.RegularExpressions;

но опять же, мне нужна эта библиотека все время.

Ответ 4

Здесь есть перегрузка String.Split:

"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);

Ответ 5

Мне нравится использовать для этого собственное расширение:

string data = "THExxQUICKxxBROWNxxFOX";
var dataspt = data.Split("xx");
//>THE  QUICK  BROWN  FOX 


//the extension class must be declared as static
public static class StringExtension
{   
    public static string[] Split(this string str, string splitter)
    {
        return str.Split(new[] { splitter }, StringSplitOptions.None);
    }
}

Однако это приведет к исключению, если Microsoft решит включить этот метод-перегруз в более поздние версии. Это также вероятная причина, по которой Microsoft пока не включила этот метод: по крайней мере, одна компания, над которой я работала, использовала такое расширение во всех своих проектах на С#.

Также возможно условное определение метода во время выполнения, если оно не существует.

Ответ 6

Предыдущие ответы все верны. Я делаю еще один шаг и заставляю С# работать, определяя метод расширения для String:

public static string[] Split(this string toSplit, string splitOn) {
    return toSplit.Split(new string[] { splitOn }, StringSplitOptions.None);
}

Таким образом, я могу назвать ее для любой строки простым способом, который я наивно ожидал, когда впервые попытался выполнить это:

"a big long string with stuff to split on".Split("g str");

Ответ 7

string data = "THExxQUICKxxBROWNxxFOX";

return data.Replace("xx","|").Split('|');

Просто выберите символ замены (выберите тот, который вряд ли будет присутствовать в строке уже!)

Ответ 8

Это также легко:

string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

Ответ 10

Самый простой способ - использовать String.Replace:

string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");

Или проще:

string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");