如何使用c#从更长的字符串中检索第一个字母字符串

时间:2017-11-23 11:00:06

标签: c# string split

下面是我尝试从中检索标签名称的两个示例字符串,第一个是使用.split函数检索的,但第二个是因为标点符号不到位而引发错误,有没有办法选择第一组alpha字符,直到出现非alpha字符?同时还从一开始就删除任何非字母字符?

secondSection = secondSection.Split('/', ',')[1];

string example 1
191100201000430<*/SIZENAME,String,5,TOUPPER/*>
string example 2
191100400050100Price

2 个答案:

答案 0 :(得分:4)

  

有没有办法选择第一组alpha字符直到非   字符出现?同时还删除任何非alpha字符   从一开始?

单向,LINQ:

string allowed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

var alllowedChars = str.SkipWhile(c => !allowed.Contains(c)).TakeWhile(allowed.Contains);
string label = new string(alllowedChars.ToArray());

答案 1 :(得分:1)

我建议使用正则表达式匹配

using System.Text.RegularExpressions;

...

// We want 1st non-empty sequence of alpha (a..z A..Z) characters
var result = Regex.Match(str, "[A-Za-z]+").Value;

借助正则表达式,您可以轻松获取所有字母名称(如果需要,可以忽略SIZENAMEString并获取TOUPPER),例如

string[] results = Regex
  .Matches(str, "[A-Za-z]+")
  .OfType<Match>()
  .Select(match => match.Value)
  .ToArray();