在第一个字母字符处拆分字符串

时间:2017-03-08 23:24:28

标签: c# string

我有一个跟随字符串数组,如图所示。在循环遍历数组时,我需要分隔数值和字母值。  例如:

  • 35.00MY到35.00和MY
  • 2.10D8至2.10和D8
  • 80.00YRI至80.00和YRI
  • 4.00G8至4.00和G8

    我尝试了以下代码,但这并没有帮助

foreach (string taxText in taxSplit) {
    Regex re = new Regex(@"([a-zA-Z]+)(\d+)");
    Match result = re.Match(taxText);
    string alphaPart = result.Groups[1].ToString();
    string numberPart = result.Groups[2].ToString(); }

enter image description here

两者都返回空

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以对Split进行混蛋并使用前瞻(?= ... )和后瞻(?<= ... )

string original = "35.00ab3500bc";
Regex reg = new Regex("(?<=[0-9])(?=[A-Za-z])");
string[] parts = reg.Split(original, 2);

在这里,我们必须实例化一个新的Regex实例,因为此版本的Split不能作为static方法使用。我们传递的图案说是找到一个空白,其中空白的左侧是一个数字(即外观),而空白的右侧是一个字母(即前瞻)。我们通过2表示我们最多需要parts中的两个项目。

答案 1 :(得分:0)

var lst = new List<string>() { "35.00MY", "2.10D8", "80.00YRI", "4.00GB" };
var res = new List<string>();

lst.ForEach(v =>
{
    res.Add(new string(v.TakeWhile(c => !Char.IsLetter(c)).ToArray()));
    res.Add(v.TrimStart("01234567890.".ToCharArray()));
} );