获取字符串中第一个非Alpha字符的索引

本文关键字:字符 索引 Alpha 字符串 第一个 获取 | 更新日期: 2023-09-27 18:18:48

每当我找到第一个非alpha或空白时,我就试图拆分字符串(在索引处)。

我的Regex是真的生锈了,并试图找到一些方向,让这个工作。

示例:"Payments Received by 08/14/2015 $0.00"是字符串。我可以找到第一个数字


string alphabet = String.Empty;
string digit = String.Empty;
int digitStartIndex;
Match regexMatch = Regex.Match("Payments Received by 08/14/2015 $0.00", "''d");
digitStartIndex = regexMatch.Index;
alphabet = line.Substring(0, digitStartIndex);
digit = line.Substring(digitStartIndex);

问题在于当像"Amount This Period + $57.00"这样的字符串最后是"本期金额+ $"

如何在c#中使用Regex,如果我还想包含特定的非字母数字字符来检查,如$ + - ?

编辑:我正在寻找输出(变量字母和数字)在上面的例子中,我正在努力成为。
本期金额
"+ 57.00美元"

获取字符串中第一个非Alpha字符的索引

要按照您提到的方式分割字符串,请使用正则表达式查找初始的alpha/空格字符,然后再查找其余的字符。

var s = "Payments Received by 08/14/2015 $0.00";
var re = new Regex("^([a-z ]+)(.+)", RegexOptions.IgnoreCase);
var m = re.Match(s);
if (m.Success)
{
    Console.WriteLine(m.Groups[1]);
    Console.WriteLine(m.Groups[2]);
}

^对于查找开头字符很重要。

啊,我想你想要这个:

void Main()
{
    var regex = new Regex(@"(.*?)(['$'+'-].*)");
    var a = "Payments Received by 08/14/2015 $0.00";
    var b = "Amount This Period + $57.00";
    Console.WriteLine(regex.Match(a).Groups[1].Value);
    Console.WriteLine(regex.Match(a).Groups[2].Value);
    Console.WriteLine(regex.Match(b).Groups[1].Value);
    Console.WriteLine(regex.Match(b).Groups[2].Value);
}

输出:

Payments Received by 08/14/2015 
$0.00
Amount This Period 
+ $57.00