我有以下輸入:Regex.Split不能正常工作?
void Main()
{
string inputData = "37.7879\r\n-122.3874\r\n40.7805\r\n-111.9288\r\n36.0667\r\n-115.0927\r\n37.7879\r\n-122.3874";
// string[] inputLines = Regex.Split(inputData, @"\r\n");
string[] inputLines = Regex.Split(inputData, @"(\r)?\n");
Console.WriteLine("The size of the list is: {0}", inputLines.Length);
bool results = inputLines.All(IsValidNumber);
foreach (string line in inputLines)
{
Console.WriteLine("{0} is: {1}", line, IsValidNumber(line));
}
}
// Define other methods and classes here
public bool IsValidNumber(string input)
{
Match match = Regex.Match(input, @"^-?\d+\.\d+$", RegexOptions.IgnoreCase);
return match.Success;
}
我想一個Regex.Split
上@"\r\n"
,如果我使用註釋行,然後我得到預期的結果。如果我使用未註釋的,我沒有得到我期望的結果。我幾乎100%肯定我的正則表達式是正確的如果"\r"
不存在(可能會或可能不會)。
我期待inputData的8個值,我試圖驗證它們是否都是有效的數字。
有沒有可能我的"(\r)?"
工作不正常?如果是這樣,我錯過了什麼?
換句話說,括號被絆倒你。寫入它的正確方法是「@」(?:\ r)?\ n「',帶有非捕獲括號。或者,正如p.s.w.g所說,'\ r'是一個單獨的字符,所以你甚至不需要分組。 – Amadan