Помогите разпарсить строку

blest
Дата: 14.01.2010 19:03:13
string str = @"for,an,ann'ualan,nou'ncement,to";

Разделитель запятая, но если в строке встречаются одинарные кавычки, нужно чтобы запятая(разделитель) между ними не учитывался

Т.е. нужно получить:

for
an
ann'ualan,nou'ncement
to

Думаю на 99% здесь нужно регулярные выражения использовать, но никак не могу составить, подскажите плз
Green2
Дата: 14.01.2010 19:22:14

может сначала распарсить splint на ординарные кавычки, а потом распарсить


Posted via ActualForum NNTP Server 1.4

Green2
Дата: 14.01.2010 19:23:03

сначала распарсить на кавычки, а потом нечётные на запятые!


Posted via ActualForum NNTP Server 1.4

Dr_Wolf
Дата: 14.01.2010 22:06:13
blest,

гуглить по "csv net"
bbbdum
Дата: 14.01.2010 23:48:17
 class Program
    {
        static void Main(string[] args)
        {
            string s = @"for,an,ann'ualan,nou'ncement,to";
          
            List<string> res = new List<string>();
            string word="";
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] == '\'')
                {
                    i++;
                    var word2 = Select(s, ref i);
                    res.Add(word2);
                }
                else
                {
                    if (s[i] == ',')
                    {
                        res.Add(word);
                        word = "";
                    }
                    else
                    {
                        word += s[i];
                    }
                }
            }
            foreach (var item in res)
            {
                Console.WriteLine(item);
            }
        }

        private static string Select(string s, ref int i)
        {
            var res = "";
            while ( i< s.Length && s[i] != '\'')
            {
                res += s[i];
                i++;
            }
            return res;
        }
    }
bbbdum
Дата: 14.01.2010 23:51:41
и в конце добавить последнее слово

if (!string.IsNullOrEmpty(word)) res.Add(word);
vladgrig
Дата: 15.01.2010 03:49:20
автор
и в конце добавить последнее слово

хм...
        Dim m As String = "for,an,ann'ualan,n,ou'nce,ment,to"

        Dim notQuote As Boolean = True
        Dim startIndex As Int16 = 0

        For i As Int16 = 0 To m.Length - 1
            Select Case m(i)
                Case ","
                    If notQuote Then
                        Console.WriteLine(m.Substring(startIndex, i - startIndex))
                        startIndex = i + 1
                    End If
                Case "'"
                    notQuote = Not notQuote
                Case Else
                    If i = m.Length - 1 Then
                        Console.WriteLine(m.Substring(startIndex, m.Length - startIndex))
                    End If
            End Select
        Next

ТС - как быть с таким вариантом?
string str = @"for,an,ann'ualan,nouncement,to";