首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#高效有选择性的处理字符串分割的有关问题

2013-07-20 
c#高效有选择性的处理字符串分割的问题C#csvString[解决办法]string[] lines System.IO.File.ReadAllLin

c#高效有选择性的处理字符串分割的问题
C# csv String
[解决办法]
string[] lines = System.IO.File.ReadAllLines("1.csv");
var query = lines.Select(x => string.Join("\t", x.Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(y => """ + y + """).ToArray()));
foreach (var item in query) Console.WriteLine(query);
[解决办法]
需要剔除那些在两个双引号之间的逗号。例如

private static IEnumerable<string> 分割(string s)
{
    var t1 = 某符号的所有位置(s, ',').ToList();
    var t2 = 某符号的所有位置(s, '"').ToList();
    for (var i = 0; i < t2.Count; i += 2)
        t1.Where(x => x > t2[i] && x < t2[i + 1])
            .ToList()
            .ForEach(x => t1.Remove(x));
    for (int i = 0, start = 0; i < t1.Count; start = t1[i] + 1, i++)
        yield return s.Substring(start, t1[i] - start);


    yield return s.Substring(t1[t1.Count - 1] + 1);
}

private static IEnumerable<int> 某符号的所有位置(string s, char c)
{
    var index = 0;
begin:
    var pos = s.IndexOf(c, index);
    if (pos < 0)
        yield break;

    yield return pos;

    index = pos + 1;
    goto begin;
}



可以试一下
            var s = "1qqq,"2d,a",ers";
            foreach (var x in 分割(s))
                Console.WriteLine(x);

热点排行