C# 如何从字符串中获取第一组字母字符?
如果我有一个字符串,我如何从字符串中提取第一个字母字符,这样我就可以得到起始字母字符或空字符串。例如:C# 如何从字符串中获取第一组字母字符?,c#,regex,split,C#,Regex,Split,如果我有一个字符串,我如何从字符串中提取第一个字母字符,这样我就可以得到起始字母字符或空字符串。例如: AB12 9HG => "AB" PJ11 => "PJ" 123JO => "" 这在正则表达式中是可能的还是有更简单的方法?您可以使用LINQ生成结果: new String(s.TakeWhile(p => Char.IsLetter(p)).ToArray()); 基本上,只需要从开始到第一个非字母字符的字符 如果有前导空格,请先修剪字符串。您可以使用LIN
AB12 9HG => "AB"
PJ11 => "PJ"
123JO => ""
这在正则表达式中是可能的还是有更简单的方法?您可以使用LINQ生成结果:
new String(s.TakeWhile(p => Char.IsLetter(p)).ToArray());
基本上,只需要从开始到第一个非字母字符的字符
如果有前导空格,请先修剪字符串。您可以使用LINQ生成结果:
new String(s.TakeWhile(p => Char.IsLetter(p)).ToArray());
基本上,只需要从开始到第一个非字母字符的字符
如果有前导空格,请先修剪字符串。可能是这样的:
^([A-Za-z])*
private HashSet<char> _alphas = new HashSet<char>("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
可能是这样的:
^([A-Za-z])*
private HashSet<char> _alphas = new HashSet<char>("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
正则表达式非常简单。只需使用^定位,然后将零个或多个字符与您想要的字符中的*匹配[A-Za-z] 输出 AB12 9HG=>AB PJ11=>PJ 123JO=>
正则表达式非常简单。只需使用^定位,然后将零个或多个字符与您想要的字符中的*匹配[A-Za-z] 输出 AB12 9HG=>AB PJ11=>PJ 123JO=> 下面是一个例子: 这将产生: 检查:ASD123,发现:ASD 检查:PJ11,发现:PJ 正在检查:123JO,找到: 下面是一个例子: 这将产生: 检查:ASD123,发现:ASD 检查:PJ11,发现:PJ 正在检查:123JO,找到:
下面是另一种LINQ方法,让您定义一个whie接受字符列表。创建一个哈希集,如下所示:
^([A-Za-z])*
private HashSet<char> _alphas = new HashSet<char>("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
下面是另一种LINQ方法,让您定义一个whie接受字符列表。创建一个哈希集,如下所示:
^([A-Za-z])*
private HashSet<char> _alphas = new HashSet<char>("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
我使用的是一个可移植类库,因此无法访问字符串上的TakeWhile方法,或者无法看到
因此,我扩展了Wiktors answer的想法,并为我的字符串提出了一个扩展方法:
public static class StringExtensions
{
public static string GetStartChars(this string s)
{
var result = string.Empty;
if (!string.IsNullOrEmpty(s))
{
s = s.TrimStart();
foreach (var letter in s.ToCharArray())
{
if (char.IsLetter(letter))
{
result += letter;
}
else
{
break;
}
}
}
return result;
}
}
像这样使用它:
var startChars = "AB11".GetStartChars();
我使用的是一个可移植类库,因此无法访问字符串上的TakeWhile方法,或者无法看到
因此,我扩展了Wiktors answer的想法,并为我的字符串提出了一个扩展方法:
public static class StringExtensions
{
public static string GetStartChars(this string s)
{
var result = string.Empty;
if (!string.IsNullOrEmpty(s))
{
s = s.TrimStart();
foreach (var letter in s.ToCharArray())
{
if (char.IsLetter(letter))
{
result += letter;
}
else
{
break;
}
}
}
return result;
}
}
像这样使用它:
var startChars = "AB11".GetStartChars();
看。顺便说一句,获取首字母的正则表达式是@^\p{L}*,但是在这里,你可以使用非正则表达式的方法得到你需要的-除非你只想限制到某些特定的脚本。很好,一些微优化:你可以使用TrimStart而不是Trim,你可以使用s.TakeWhileChar.isleter是的,TrimStart看起来更合适。请参阅。顺便说一句,获取首字母的正则表达式是@^\p{L}*,但是在这里,你可以用非正则表达式的方法得到你所需要的-除非你只想限制到某些特定的脚本。很好,一些微优化:你可以使用TrimStart而不是Trim,你可以使用s.TakeWhileChar.isleter是的,TrimStart看起来更合适。