2015-03-11 4 views
-2
string Idstr="ID03I010102010210AEMPD4677EID03I020102020208L8159734ID03I030102030210IPS1406974PT03T010109981815938030202PT03T0201109899488666030201PT03T0301109818159381030203PT03T040112919818159381030201"; 

string[] stringSeparators = new string[] { "ID03I0" }; 
string[] result; 

result = IdStr.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries); 

Это результат:Расщепление строка на мультисимвольных разделитель

result[0]=10102010210AEMPD4677E 
result[1]=20102020208L8159734 
result[3]=30102030210IPS1406974PT03T010109981815938030202PT03T0201109899488666030201PT03T0301109818159381030203PT03T040112919818159381030201 

Желаемый результат:

result[0]=ID03I010102010210AEMPD4677E 
result[1]=ID03I020102020208L8159734 
result[3]=ID03I030102030210IPS1406974PT03T010109981815938030202PT03T0201109899488666030201PT03T0301109818159381030203PT03T040112919818159381030201 

Как вы можете видеть, что я хочу, чтобы включить разделитель ID03I0 к элементам.

ПРИМЕЧАНИЕ: Я знаю, что могу включить его путем жесткого кодирования. Но я не хочу этого делать.

+1

Вы всегда можете просто добавить разделитель к началу всех элементов .... – colmde

+0

Его данные. Включите все, что вы хотите в нем. –

+1

Почему бы просто не добавить его в начало каждого элемента результата? – HimBromBeere

ответ

3
result = IdStr.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries) 
    .Select(x => stringSeparators[0] + x).ToArray(); 

Это добавляет сепаратор в начало для каждого элемента в вашем массиве.

EDIT: К сожалению, при таком подходе вы можете использовать только один разделитель. Поэтому, если вы хотите добавить больше, вы будете использовать Regex.

+0

Это лучший подход. Существует также регулярное выражение, но это должно быть намного проще в CPU. – bokibeg

2

Следующее Regex шаблон должен работать.

string input = "ID03I010102010210AEMPD4677EID03I020102020208L8159734ID03I030102030210IPS1406974PT03T010109981815938030202PT03T0201109899488666030201PT03T0301109818159381030203PT03T040112919818159381030201"; 
string delimiter = "ID03I0";//Modify it as you need 
string pattern = string.Format("(?<=.)(?={0})", delimiter); 
string[] result = Regex.Split(input, pattern); 

Online Demo

адаптировано из this answer.

Смежные вопросы