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