我正在編寫一個代碼,它將查看名爲a的文本文件中的組,並且如果該代碼中的某行包含「Savings Found」一詞,它將寫出該行,並且如果有節省30%或更多,它會在前面放置一個星號,如果它包含30%或更多,並且節省500美元或更多,它會放置兩個星號。下面我有一個採樣數據,控制檯需要什麼樣子的例子,代碼我迄今:修復System.FormatException
string find = "Savings found:";
foreach (var line in a.Where(w => w.Contains(find)))
{
var subStr = line.Substring(line.IndexOf(find) + find.Length);
var startIndex = subStr.IndexOf('(');
var endIndex = subStr.IndexOf(')');
var savings = double.Parse(subStr.Substring(0, startIndex - 1).Trim());
var percent = double.Parse(subStr.Substring(startIndex + 1, endIndex - startIndex - 2).Trim());
Console.WriteLine("{0}{1}{2}", (percent >= 30) ? "*" : string.Empty,
(percent >= 30 && savings >= 500) ? "*" : string.Empty,
line);
}
數據採樣/例如
* 5/21/2015 11:55:56 PM | Batch 6|386/767|50.33 %|CH2M-R|Processed NXRMN5...Checking refundable and non-refundable fares. Traditional Booking. Inside ticketing window. Minimum Savings Required: $131.00. Actual Savings: $257.18. Savings found: $257.18 (11.55 %). Savings were previously found.
,我遇到的問題是我得到一個FormatException錯誤,我想我知道問題是什麼。問題是subString的值是257.18以及之後的所有內容。我不想要所有的東西,我只想要這個號碼。我可以做些什麼來擺脫額外的垃圾,以便它可以編譯?
這個問題類似於先前提出的一個問題,但是在那個答案中,我得到一個ArgumentIndexOutOfBounds異常,試圖解決它,但並沒有在實際解決問題方面走得太遠,因此推理這個問題。
「這樣它可以編譯?」這似乎是一個運行時錯誤,而不是編譯器錯誤。 –
@ThomasWeller這是一個運行時錯誤。我爲這個錯誤道歉。感謝您指出它我欣賞它 – user4970927
我想你在解析方法中包含'$'和'%',它不起作用。 –