Ответ 1
Чтобы разбить по строке, вам нужно будет использовать string array overload.
string data = "THExxQUICKxxBROWNxxFOX";
return data.Split(new string[] { "xx" }, StringSplitOptions.None);
Я использовал метод Split()
для разделения строк, но это работает, только если вы разделяете строку по символу. Есть ли способ разделить string
с другой строкой, являющейся параметром разделения по?
Я попытался преобразовать сплиттер в массив символов, но безуспешно.
Другими словами, я хотел бы разбить string
:
THExxQUICKxxBROWNxxFOX
по xx
и вернуть массив со значениями:
БЫСТРО, КОРИЧНЕВЫЙ, ЛИС
Чтобы разбить по строке, вам нужно будет использовать string array overload.
string data = "THExxQUICKxxBROWNxxFOX";
return data.Split(new string[] { "xx" }, StringSplitOptions.None);
Существует перегрузка Split, которая принимает строки.
"THExxQUICKxxBROWNxxFOX".Split(new [] { "xx" }, StringSplitOptions.None);
Вы можете использовать любой из этих StringSplitOptions
Итак, если строка "THExxQUICKxxxxBROWNxxFOX", StringSplitOptions.None
вернет пустую запись в массиве для части "xxxx", а StringSplitOptions.RemoveEmptyEntries
не будет.
Regex.Split(string, "xx")
это способ, которым я делаю это обычно. Конечно тебе понадобится
using System.Text.RegularExpressions;
но опять же, мне нужна эта библиотека все время.
Здесь есть перегрузка String.Split:
"THExxQUICKxxBROWNxxFOX".Split(new [] {"xx"}, StringSplitOptions.None);
Мне нравится использовать для этого собственное расширение:
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 пока не включила этот метод: по крайней мере, одна компания, над которой я работала, использовала такое расширение во всех своих проектах на С#.
Также возможно условное определение метода во время выполнения, если оно не существует.
Предыдущие ответы все верны. Я делаю еще один шаг и заставляю С# работать, определяя метод расширения для 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");
string data = "THExxQUICKxxBROWNxxFOX";
return data.Replace("xx","|").Split('|');
Просто выберите символ замены (выберите тот, который вряд ли будет присутствовать в строке уже!)
Это также легко:
string data = "THExxQUICKxxBROWNxxFOX";
string[] arr = data.Split("xx".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
Начиная с .NET Core 2.0, есть переопределение, которое принимает строку.
Так что теперь вы можете сделать "THExxQUICKxxBROWNxxFOX".Split("xx")
.
Самый простой способ - использовать String.Replace
:
string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");
Или проще:
string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");