下面是我尝试从中检索标签名称的两个示例字符串,第一个是使用.split函数检索的,但第二个是因为标点符号不到位而引发错误,有没有办法选择第一组alpha字符,直到出现非alpha字符?同时还从一开始就删除任何非字母字符?
secondSection = secondSection.Split('/', ',')[1];
string example 1
191100201000430<*/SIZENAME,String,5,TOUPPER/*>
string example 2
191100400050100Price
答案 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;
借助正则表达式,您可以轻松获取所有字母名称(如果需要,可以忽略SIZENAME
,String
并获取TOUPPER
),例如
string[] results = Regex
.Matches(str, "[A-Za-z]+")
.OfType<Match>()
.Select(match => match.Value)
.ToArray();