带逗号,双引号的字符串 能否分别按照逗号分隔转换为一个数组?

tsyj221 2017-04-14 04:33:39
"Data Management","All Regions","Standn10,000s)","0.016000","0","0.000000","","{""ImageType"":"""",""UsageType"":""DataTrOut""}","",""

上面字符串 能否分别按照逗号分隔转换为一个数组?
其中"Standn10,000s)",和"{""ImageType"":"""",""UsageType"":""DataTrOut""}"分别是是数组的一个元素
...全文
283 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
大鱼> 2017-04-15
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
你这是标准的 CSV 格式数据
        static List<string> getcsv(string str)
        {
            var res = new List<string>();
            var flag = 0;
            var st = new StringBuilder();
            foreach (var c in str)
            {
                st.Append(c);
                switch (c)
                {
                    case '"':
                        flag++;
                        break;
                    case ',':
                        if (flag % 2 == 0)
                        {
                            res.Add(st.ToString(1, st.Length - 3));
                            st = new StringBuilder();
                        }
                        break;
                }
            }
            if (st.Length > 0) res.Add(st.ToString(1, st.Length - 2));
            return res;
        }
+1
xuzuning 2017-04-14
  • 打赏
  • 举报
回复
你这是标准的 CSV 格式数据
        static List<string> getcsv(string str)
        {
            var res = new List<string>();
            var flag = 0;
            var st = new StringBuilder();
            foreach (var c in str)
            {
                st.Append(c);
                switch (c)
                {
                    case '"':
                        flag++;
                        break;
                    case ',':
                        if (flag % 2 == 0)
                        {
                            res.Add(st.ToString(1, st.Length - 3));
                            st = new StringBuilder();
                        }
                        break;
                }
            }
            if (st.Length > 0) res.Add(st.ToString(1, st.Length - 2));
            return res;
        }
tsyj221 2017-04-14
  • 打赏
  • 举报
回复
用正则表达式的吗?
stherix 2017-04-14
  • 打赏
  • 举报
回复

string aaa="xxxxx";
		Stack<char> stack = new Stack<char>();
		List<string> result = new List<string>();
		int lastPos = 0;
		for (int i = 0; i < aaa.Length; i++)
		{
			if (aaa[i] == '{' || aaa[i] == '(')
				stack.Push(aaa[i]);
			if (aaa[i] == ',' && stack.Count == 0)
			{
				result.Add(aaa.Substring(lastPos, i - lastPos));
				lastPos = i + 1;
			}
			if (aaa[i] == '}' && stack.Count > 0 && stack.Peek() == '{')
				stack.Pop();
			if (aaa[i] == ')' && stack.Count > 0 && stack.Peek() == ')')
				stack.Pop();
		}
		if (lastPos < aaa.Length)
			result.Add(aaa.Substring(lastPos));
要下班了,差不多这个意思
JustWantToFly 2017-04-14
  • 打赏
  • 举报
回复
引用 2 楼 JustWantToFly 的回复:

string str="";//要分割的字符串
string SEPARATOR= ",";//存储分隔符 
int count = str.Count(p => p.ToString() == SEPARATOR);//获取分隔符在字符串中的个数
string[] strcount=new String[count]{};
for (int i = 0; i< count ;i++)
{
	strcount[i]=str.Substring(0, PrimaryKey.IndexOf(","));//按照分隔符顺序截取字符串
	str = str.Substring(str.IndexOf(",")+1);//截取剩下的字符串并存到str中
}
你可以按照这个思路试试
刚刚的有个错这个是改正后
JustWantToFly 2017-04-14
  • 打赏
  • 举报
回复

string str="";//要分割的字符串
string SEPARATOR= ",";//存储分隔符 
int count = UpdateItem.Count(p => p.ToString() == SEPARATOR);//获取分隔符在字符串中的个数
string[] strcount=new String[count]{};
for (int i = 0; i< count ;i++)
{
	strcount[i]=str.Substring(0, PrimaryKey.IndexOf(","));//按照分隔符顺序截取字符串
	str = str.Substring(str.IndexOf(",")+1);//截取剩下的字符串并存到str中
}
你可以按照这个思路试试
1988525 2017-04-14
  • 打赏
  • 举报
回复
split(',') 返回的就是数组

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧