用另一个字符串分割一个字符串,除了

时间:2019-11-16 09:46:53

标签: c# regex split except

除了分段包含:之外,我想用正则表达式使用分隔符?:拆分此行

string input = "AV Rocket 456:Contact?:Jane or Tarza:URL?:http?://www.jane.com:Delivered 18?:15:Product Description";

我尝试过

string pattern = @"[^\?:]\:";

但是所有元素的最后一个字符都被切除,

我正在等待这个结果:

  

'AV Rocket 456'
'联系方式:: JANE OR TARZAN'
  'URL?:http?://www.jane.com'
'交货时间18 :: 15'
'产品   说明'

https://dotnetfiddle.net/PeVuMM

1 个答案:

答案 0 :(得分:0)

如果我理解了您的问题,下面的示例将提供预期的输出:)

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using Xunit;

namespace XUnitTestProject1
{
    public class UnitTest1
    {
        [Fact]
        public void TestPatternSplit()
        {

            var input = @"AV Rocket 456:Contact?:Jane or Tarzan:URL?:http?://www.jane.com:Time Delivered 18?:15:Product Description";

            var output = PatternSplit(input);

            var expected = new[]{"AV Rocket 456", "Contact?:Jane or Tarzan", "URL?:http?://www.jane.com","Time Delivered 18?:15","Product Description"};

            Assert.Equal(expected, output);

        }

        private static IEnumerable<string> PatternSplit(string input)
        {
            const string  pattern = @"(?<!\?):";
            return Regex.Split(input, pattern);
        }
    }
}
相关问题