例如:a="A.dfgvjahfg,B.dfgvjahfg,C.dfgvjahfg,D.dfgvjahfg,E.dfgvjahfg,F.dfgvjahfg,B.dfgvjahfg"我想要截取A,B,C,D等等,a的值是不固定的,我想的是截取‘.’前面的内容,望各位大神指教,谢谢啦!!!
用Lamdba实现的代码如下:
var a = "A.dfgvjahfg,B.dfgvjahfg,C.dfgvjahfg,D.dfgvjahfg,E.dfgvjahfg,F.dfgvjahfg,B.dfgvjahfg";
var result = a.Split(',').Select(s => s.Split('.').FirstOrDefault());
result.ToList().ForEach(s => Console.WriteLine(s));
输出结果:
A
B
C
D
E
F
B
这个方法不错,简单高效,学习了
步骤:1、转成字符数组。2、遍历字符数组,然后获取每一个.对应的位置。3、然后再获取该位置前一个字符。
这样一遍下来,你要的字符就都拿到了。
使用正则式
(?<=^|,).*?(?=$|\.)
怎么总有问字符串截取的?.net给我们提供了那么多东西,难道split这些东西都不知道么?
知道啊,我用: string [] tem=aa.aplit('.');保存起来了啊
@A.I.N.Y: 你要先用,split,然后才是一个整个的数据结构,然后在每个进行用.split,可以存到一个类里面,然后你只取某一个属性。
正则替换
表达式:.[^\.]*[,$]+
可以到这里验证:http://tool.oschina.net/regex/
dudu的正解~最简单粗暴的方法
linq果然好用~dudu的好用
正则高效,万能!
try { Regex regexObj = new Regex(@"(?<=^|,).*?(?=$|\.)", RegexOptions.Multiline); Match matchResults = regexObj.Match(subjectString); while (matchResults.Success) { // matched text: matchResults.Value // match start: matchResults.Index // match length: matchResults.Length matchResults = matchResults.NextMatch(); } } catch (ArgumentException ex) { // Syntax error in the regular expression }