C#学习教程:在()中将字符串','拆分为除','以外的数组Standard),UI,1(db=1,api=STANDARD),Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.125Safari/537.36,1010,9999,1000,9998.0,,1"我想用char','拆分它,但我不想把','放在'()'中。请帮助如何在C#中拆分这样的字符串。忽略()中的字符','。输出应该是这样的:arrayofstring=["11","Standard(db=S,api=Standard)","UI","1(db=1,api=STANDARD)","Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.125Safari/537.36","1010"etc.如果模式总是你可以使用RegularExpression在分隔符(逗号)上分割而不是匹配的令牌。识别分隔符的逗号需要比较简单:",(?=[^)]*(?:(|$))"演示:https://dotnetfiddle.net/GgboVn解释:http://regexr.com/3bgfj这是一个解析器publicstaticIEnumerableParse(stringInput){intdepth=0;StringBuilderLine=newStringBuilder();foreach(chariteminInput){if(depth==0&&item==','){yieldreturnLine.ToString();行=新的StringBuilder();}else{Line.Append(item);if(item=='('){depth++;}if(item==')'){depth--;}}}如果(Line.Length>0)yieldreturnLine.ToString();目的:varresult=Parse(input);这是一个简单明了的解析器。不是防弹的,根据您的需要,可能需要进行一些修改:staticvoidMain(string[]args){vartoSplit="11,Standard(db=S,api=Standard),UI,1(db=1,api=STANDARD),Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.125Safari/537.36,1010,9999,1000,9998.0,,1";varlist=new列表();varisInside=0;varcurrentPart=string.Empty;for(inti=0;i这应该做你想做的。它将在任何括号外的定界符处拆分输入列出项目=newList();stringnewItem=string.Empty;intopenParenthesis=0;foreach(internalItems中的字符串项){if(openParenthesis!=0)newItem+=",";新项目+=项目;openParenthesis+=GetCharCount('(',item);openParenthesis-=GetCharCount(')',item);如果(openParenthesis==0){theItems.Add(newItem);newItem=string.Empty;}}返回项目;}staticintGetCharCount(charvalue,stringtext){intcount=0;foreach(charcharacterintext){if(character==value){count++;}}返回计数;该代码不是测试集,可能包含错误。如果您觉得这是有效的var值="11,Standard(db=S,api=Standard),UI,1(db=1,api=STANDARD),Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.125Safari/537.36,1010,9999,1000,9998.0,,1";varsplitList=GetSplitList(值);publicstaticListGetSplitList(stringvalues){varsplitList=newList();varretValue=string.Empty;foreach(varvalueinvalues.Split(',')){if(!string.IsNullOrEmpty(retValue)&&!value.Contains(")")){retValue+=string.Format("{0},",价值);继续;}if(value.Contains("(")){retValue+=string.Format("{0},",value);continue;}if(value.Contains(")")){retValue+=value;splitList.Add(retValue);retValue=string.Empty;继续;}splitList.Add(值);}返回拆分列表;}IMO最简单的方法是首先使用','分割字符串,然后连接'('和')'符号:stringvalue=@"11,Standard(db=S,api=Standard),UI,1(db=1,api=STANDARD),Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/44.0.2403.125Safari/537.36,1010,9999,1000,9998.0,,1";Listlist=newList();string[]temp=value.Split(',');for(vari=0;ioutput:11Standard(db=S,api=Standard)UI1(db=1,api=STANDARD)PS当然你也可以写你的解析器:staticstring[]MySplit(stringdirty,chardelimiter=',',stringignoreInside="()"){StringBuildersb=newStringBuilder();boolsectionStarted=false;Listresult=newList();for(inti=0;iUsage:varresult=MySplit(value);输出同上例,有用,需要详细了解C#学习教程,希望大家多多关注-本文收集自网络,不代表一个职位,如涉及侵权,请点击右边联系管理员删除,如需转载请注明出处:
