将字母数字字符串拆分为分别包含字母和数字字符的数组
本文关键字:数字字符 包含字 数组 拆分 数字 字符串 | 更新日期: 2023-09-27 18:32:44
我正在寻找一种拆分字母数字字符串的方法,例如
"Foo123Bar"
放入一个包含它的数组中,就像这样
array[0] = "Foo"
array[1] = "123"
array[2] = "Bar"
我不确定实现这一目标的最佳方法是什么,特别是因为我正在比较的字符串没有遵循特定的模式,就第一个,字母或数字,或者它们各自出现的次数而言。例如,它可能看起来像以下任何一种:
"Foo123Bar"
"123Bar"
"Foobar123"
"Foo123Bar2"
我试图找出除了按字符拆分字符串字符并检查它是否是数字之外,是否有更有效的方法可以做到这一点。
string input = "Foo123Bar";
var array = Regex.Matches(input, @"'D+|'d+")
.Cast<Match>()
.Select(m => m.Value)
.ToArray();
我认为您不会绕过检查字符串的每个字符。
你可以尝试这样的事情:
string[] SplitMyString(string s)
{
if( s.Length == 0 )
return new string[0];
List<string> split = new List<string>(1);
split.Add("");
bool isNumeric = s[0] >= '0' && s[0] <= '9';
foreach(char c in s)
{
bool AddString = false;
if( c >= '0' && c <= '9' )
{
AddString = !isNumeric;
isNumeric = true;
}
else
{
AddString = isNumeric;
isNumeric = false;
}
if( AddString )
split.Add(c.ToString());
else
split[split.Count-1] += c;
}
return split.ToArray();
}