Regex.Split не держит перевод строки - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь разбить строку на основе \n \r \r\n, но я не хочу удалять их из строки

я знаю Regex.Split может сохранить разделитель но кое-как как их убрать

Содержимое строки

string contentString = @"幘䄍ਫ਼䱌㈰ぞ䙓ഊ幃噎ഊ幃䤱㝞䙏㈵ⰳ㕞䅁丬ㄲⰷ幆ㄶ幆䐀吀栀椀猀 昀漀爀洀愀琀 琀攀猀琀猀㨀幆匠ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 1 ^FS
਍ਫ਼塁ഊ幌䰲〰幆匍ਫ਼䍖不ਫ਼䍉ㄷ幆伲㔬㌵幁䅎ⰱ㈬㝞䘱㙞䙄This format tests:^䙓ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 椀渀瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234þ>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 2 ^FS
਍ਫ਼塁ഊ幌䰲〰幆匍ਫ਼䍖复ਫ਼䍉ㄷ幆伲㔬㌵幁䅎ⰱ㈬㝞䘱㙞䙄This format tests:^䙓ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀Ⰰ 愀渀搀 挀漀搀攀 瘀愀氀椀搀愀琀椀漀渀 ⠀䌀嘀⤀ 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 3 ^FS
਍ਫ਼塁ഊ幌䰲〰幆匍ਫ਼䍖复ਫ਼䍉ㄷ幆伲㔬㌵幁䅎ⰱ㈬㝞䘱㙞䙄This format tests:^䙓ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 椀渀瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀Ⰰ 愀渀搀 挀漀搀攀 瘀愀氀椀搀愀琀椀漀渀⠀䌀嘀⤀ 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234þ>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 4 ^FS
ਫ਼䙘⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⩞䙓"

Выражение с использованием

  Regex.Split(contentString, "\n|\r\n|\r");

Пожалуйста, помогите мне сделать это

Заранее спасибо Monika

1 Ответ

0 голосов
/ 27 августа 2018

Вы должны добавить в скобках в шаблон:

https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.split?redirectedfrom=MSDN&view=netframework-4.7.2#System_Text_RegularExpressions_Regex_Split_System_String_System_String_

Если в скобках используются в выражении Regex.Split, любое захваченный текст включается в результирующий массив строк. Например, если вы разделите строку «сливовая груша» на дефис, помещенный в захватывая скобки, возвращаемый массив содержит строковый элемент содержит дефис.

( жирный - мой)

В вашем случае, чтобы разделить

string contentString = @"幘䄍ਫ਼䱌㈰ぞ䙓ഊ幃噎ഊ幃䤱㝞䙏㈵ⰳ㕞䅁丬ㄲⰷ幆ㄶ幆䐀吀栀椀猀 昀漀爀洀愀琀 琀攀猀琀猀㨀幆匠ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 1 ^FS
਍ਫ਼塁ഊ幌䰲〰幆匍ਫ਼䍖不ਫ਼䍉ㄷ幆伲㔬㌵幁䅎ⰱ㈬㝞䘱㙞䙄This format tests:^䙓ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 椀渀瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234þ>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 2 ^FS
਍ਫ਼塁ഊ幌䰲〰幆匍ਫ਼䍖复ਫ਼䍉ㄷ幆伲㔬㌵幁䅎ⰱ㈬㝞䘱㙞䙄This format tests:^䙓ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀Ⰰ 愀渀搀 挀漀搀攀 瘀愀氀椀搀愀琀椀漀渀 ⠀䌀嘀⤀ 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 3 ^FS
਍ਫ਼塁ഊ幌䰲〰幆匍ਫ਼䍖复ਫ਼䍉ㄷ幆伲㔬㌵幁䅎ⰱ㈬㝞䘱㙞䙄This format tests:^䙓ഊ幃䤱㝞䙏㈵ⰵ㕞䅁丬ㄲⰷ幆ㄶ幆䐀倀䐀䘀㐀㄀㜀 ⠀䈀㜀⤀Ⰰ 䴀漀搀攀㨀  Ⰰ 䌀䤀㈀㤀 眀椀琀栀 椀渀瘀愀氀椀搀 挀栀愀爀愀挀琀攀爀猀Ⰰ 愀渀搀 挀漀搀攀 瘀愀氀椀搀愀琀椀漀渀⠀䌀嘀⤀ 幆匍ਫ਼䍉ㄷ幆伲㔬㤵幂㝎ⰵⰬⰬⱞ䘱㙞䙄01234þ>A>B>CABC<A<B<C^䙓ഊ幈䌍ਫ਼塚
^FX CRC Block No 4 ^FS
ਫ਼䙘⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⨪⩞䙓";

Вместо исходного "\n|\r\n|\r" шаблона вы можете поставить тот же, но с захватом скобок: "(\n|\r\n|\r)", т.е.

  string[] parts = Regex.Split(contentString, "(\n|\r\n|\r)");
...