Я использую метод Split()
для разделения строк, но это только работает, если вы разделяете строку символом. Есть ли способ разделить a string
, а другая строка будет разделена на параметр? Я попытался преобразовать разделитель в массив символов, без везения.
Другими словами, я хотел бы разделить string
:
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
Итак, если строка "THExxQUICKxxxxBROWNxxFOX", StringSplitOptions.None
вернет пустую запись в массиве для части "xxxx", а StringSplitOptions.RemoveEmptyEntries
не будет.
"THExxQUICKxxBROWNxxFOX".Split(new[] { "xx" }, StringSplitOptions.None);
буду работать.
Regex.Split(string,"xx")
- это то, как я обычно это делаю. Конечно, вам понадобится
using System.Text.RegularExpressions;
но снова мне нужно, чтобы lib все время.
RegEx.Split
немного дороже, чем простой String.Split
из-за накладных расходов регулярного выражения.
Regex.Escape
используйте Regex.Escape
для строки, это Regex.Escape
любые метасимволы regex.
Здесь есть перегрузка 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 пока не включила этот метод: по крайней мере, одна компания, над которой я работала, использовала такое расширение во всех своих проектах на С#.
Также возможно условное определение метода во время выполнения, если оно не существует.
params string[] splitter
в качестве второго параметра и измените new[] {splitter}
на splitter
для поддержки нескольких разделителей.
string data = "THExxQUICKxxBROWNxxFOX";
return data.Replace("xx","|").Split('|');
Просто выберите символ замены (выберите тот, который вряд ли будет присутствовать в строке уже!)
Вышеуказанные ответы правильны. Я делаю еще один шаг и делаю С# для меня, определяя метод расширения в 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.Replace
:
string myString = "THExxQUICKxxBROWNxxFOX";
mystring = mystring.Replace("xx", ", ");
Или проще:
string myString = "THExxQUICKxxBROWNxxFOX".Replace("xx", ", ");
xx
.