При работе со строкой я наткнулся на 2 строки, каждая из которых содержит 2 (в nos) запятых , .
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
Regex rexCsvSplitter = new Regex(@",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))");
string str1 = "\"\"|\"FAN100\"|\"\"|\"XXXXX XXXXX,XXX.\"|\"9999 XXXXXX,XXX XXXXX\"|\"\"|\"XXXXXXXXXXX\"|\"ON\"|\"X9X 9X9\"|\"XXX\"|\"99\"|\"XXX\"|\"999 999-9999\"|\"999 999-9999\"|\"XXXX XXXX\"|\"xxx@xxx.xxx\"|\"N\"|\"\"|\"0099\"|\"XXX\"|\"X\"|\"\"|\"\"";
string str2 = "\"\"|\"FAN100\"|\"\"|\"XXXXX XXXXX,XXX.\"|\"XX XXXX 9999,XXXXXX XXXXXX \"\"X\"\"|\"\"|\"XXXXXX\"|\"ON\"|\"XXX XXX\"|\"XXX\"|\"99\"|\"XXX\"|\"999 999-9999\"|\"999 999-9999\"|\"XXXX XXXX\"|\"xxx@xxx.xxx\"|\"N\"|\"\"|\"0099\"|\"XXX\"|\"X\"|\"\"|\"\"";
Console.WriteLine("Hello World: {0}, {1}",rexCsvSplitter.Split(str1).Length,rexCsvSplitter.Split(str2).Length);
}
}
В приведенном выше примере обе строки str1
и str2
состоят из 2 запятых, но с разными индексами.,(?=(?:[^""]*""[^""]*"")*(?![^""]*""))
разделяет 'str1' с длиной 1 и str2
с длиной 3.
Почему это происходит, может кто-нибудь объяснить?
Скрипка здесь
Заранее спасибо.