在使用字符串时,我遇到了两个都包含2个逗号(
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个逗号,但索引不同。 ,(?=(?:[^""]*""[^""]*"")*(?![^""]*""))
将长度为1的'str1'和长度为3的str2
分开。
为什么会这样,有人可以解释吗?
谢谢。