簡體   English   中英

在字符串C#中獲取第一個非Alpha字符的索引

[英]Getting Index of First Non Alpha character in a string C#

每當我找到第一個非alpha或空格時,我都試圖拆分一個字符串(在索引處)。

我的Regex確實很生銹,正在設法找到一些使之起作用的方向。

示例:字符串為“ 2015年8月14日之前收到的付款$ 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”的字符串以“ Amount This Period + $”結尾時

如果我還想包含特定的非字母數字字符來檢查諸如$ + - ,如何從C#中使用Regex?

編輯:我在上面想要解決的示例中尋找輸出(變量字母和數字)。
“本期金額”
“ + $ 57.00”

啊,那你想我想:

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

要按照您提及的方式拆分字符串,請使用正則表達式查找初始的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]);
}

^對於在開始時查找字符很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM