110,533
社区成员
发帖
与我相关
我的任务
分享
string str = @"3457,台,信息技术,"" 13,000,00 "",AMIN-1105-0537,A0411050537,笔记本,"" 12,345,333 ""
3715,台,信息技术,"" 5,500,00 "",AMIN-1108-0189,A0411080189,平板电脑,"" 5,500,00 """;
Regex reg = new Regex(@"(?<!""\s*(?:\d+,?)+),");
foreach (string s in str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries))
{
foreach (string r in reg.Split(s))
Console.WriteLine(r);
Console.WriteLine(new string('*', 20));
}
/*
3457
台
信息技术
" 13,000,00 "
AMIN-1105-0537
A0411050537
笔记本
" 12,345,333 "
********************
3715
台
信息技术
" 5,500,00 "
AMIN-1108-0189
A0411080189
平板电脑
" 5,500,00 "
********************
*/
string str = @"3457,台,信息技术,"" 13,000.00 "",AMIN-1105-0537,A0411050537,笔记本,"" 13,000.00 ""
3715,台,信息技术,"" 5,500.00 "",AMIN-1108-0189,A0411080189,平板电脑,"" 5,500.00 """;
Regex reg = new Regex(@"(?<!""\s*\d+),");
foreach (string s in str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries))
{
foreach (string r in reg.Split(s))
Console.WriteLine(r);
Console.WriteLine(new string('*', 20));
}
/*
3457
台
信息技术
" 13,000.00 "
AMIN-1105-0537
A0411050537
笔记本
" 13,000.00 "
********************
3715
台
信息技术
" 5,500.00 "
AMIN-1108-0189
A0411080189
平板电脑
" 5,500.00 "
********************
*/
string str = @"3457,台,信息技术,"" 13,000.00 "",AMIN-1105-0537,A0411050537,笔记本,"" 13,000.00 """;
string[] result = Regex.Split(str, @"(?<!""\s*\d+),");
foreach (string s in result)
Console.WriteLine(s);
/*
3457
台
信息技术
" 13,000.00 "
AMIN-1105-0537
A0411050537
笔记本
" 13,000.00 "
*/
string str = "123,123,\"12,123\",12,\"12,3,2\",3,\"5\"";
string[] result = Regex.Split(str, @"(?<!""(?:\d+,?)+),");
foreach (string s in result)
Console.WriteLine(s);
/*
123
123
"12,123"
12
"12,3,2"
3
"5"
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s = "123,123,\"12,123\",12,\"12,2\"";
foreach (string item in MySplit(s, ','))
{
Console.WriteLine(item);
}
}
static IEnumerable<string> MySplit(string source, char splitter)
{
string buffer = string.Empty;
bool flag = false;
for (int i = 0; i < source.Length; i++)
{
if (source[i] == (char)34)
{
flag = !flag;
}
else
{
if (source[i] == splitter && !flag)
{
yield return buffer;
buffer = string.Empty;
}
else
{
buffer += source[i].ToString();
}
}
}
if (buffer != string.Empty) yield return buffer;
}
}
}