मैं त्रुटि "FormatException बिना क्रिया था" हो रही है - इस पर:सी # - प्रकार System.FormatException का एक बिना क्रिया का अपवाद - सूची स्ट्रिंग सूची में पूर्णांक
List<int> myStringList = LoadHours.ConvertAll(s => Int32.Parse(s));
मैं इसके अलावा ऐसा करने में सक्षम होने की जरूरत है और विभाजन इसलिए मैं उन्हें एक पूर्णांक में बदलने की कोशिश कर रहा हूं। तो मुझे यकीन नहीं है कि इसे कैसे संभालना है, क्या मुझे उन्हें वापस स्ट्रिंग में बदलने की आवश्यकता होगी?
कोड:
//string txt = "Account: xxx123xxx\r\nAppID 10: 55 Hours 4 Minutes\r\n\r\nAccount: xxx124xxx\r\nAppID 730: 62 Hours 46 Minutes\r\nAppID 10: 3 Hours 11 Minutes\r\n\r\nAccount: xxx125xxx\r\nAppID 10: 0 Hours 31 Minutes\r\n";
string path = @"Hours.txt";
string text = File.ReadAllText(@"Hours.txt");
Regex pattern = new Regex(@"^((AppID (?<appid>\d+): ((?<hours>\d+) Hours)?((?<minutes>\d+) Minutes)?)|(Account: (?<account>xxx\d+xxx)))", RegexOptions.Multiline);
string[] lines = File.ReadAllLines(path);
int HrElapsed;
int MinElapsed;
Int32.TryParse(HoursElapsed(), out HrElapsed);
Int32.TryParse(MinutesElapsed(), out MinElapsed);
List <string> LoadHours = new List <string>();
List <string> LoadMinutes = new List <string>();
// Iterate through lines
foreach(string line in lines) {
//Check if line matches your format here
Match match = pattern.Match(line);
LoadHours.Add(match.Groups["hours"].Value);
LoadMinutes.Add(match.Groups["minutes"].Value);
//File.WriteAllText(@"Hours.txt", Regex.Replace(File.ReadAllText(@"Hours.txt"), @"AppID \d+:\s(\d+\s\w+\s\d+\s\w+)",LogTime));
}
List <int> myStringList = LoadHours.ConvertAll(s => Int32.Parse(s));
List <int> myStringList2 = LoadMinutes.ConvertAll(s => Int32.Parse(s));
for (int i = 0; i < myStringList.Count; ++i)
{
myStringList[i] = myStringList[i] + HrElapsed;
}
for (int i = 0; i < myStringList2.Count; ++i) {
myStringList2[i] = myStringList2[i] + MinElapsed;
}
string[] the_array = myStringList.Select(i => i.ToString()).ToArray();
string[] the_array2 = myStringList2.Select(i => i.ToString()).ToArray();
Regex re = new Regex(@"^((AppID (?<appid>\d+): ((?<hours>\d+) Hours)?((?<minutes>\d+) Minutes)?)|(Account: (?<account>xxx\d+xxx)))", RegexOptions.Multiline);
string hackount = "";
(from m in re.Matches(text).Cast <Match>()
let acc = m.Groups["account"].Value
let app = m.Groups["appid"].Value
// let hrs = m.Groups["hours"].Value
// let mins = m.Groups["minutes"].Value
let timHours = the_array
let timMinutes = the_array2
let obj = new {
Account = acc == "" ? hackount : (hackount = acc), AppId = app, Time = the_array, the_array2
}
where app != ""
select obj
).ToList().ForEach(Console.WriteLine);
Hours.txt फ़ाइल इसमें शामिल हैं:
Account: xxx123xxx
AppID 10: 1 Hours 5 Minutes
Account: xxx124xxx
AppID 10: 2 Hours 6 Minutes
AppID 10: 3 Hours 7 Minutes
Account: xxx125xxx
AppID 10: 4 Hours 8 Minutes
मैं सिर्फ घंटे और मिनट के अंकों को संशोधित करने की कोशिश कर रहा हूँ। समय बीतने की गणना (प्रोग्राम कितनी देर तक खोला गया है) और इसे टेक्स्ट फ़ाइल में पहले से संग्रहीत राशि में जोड़ना। फिर इसे कंसोल पर आउटपुट करने के बजाय फ़ाइल पर वापस सहेजें। (मैं फ़ाइल को पार्स और अंक हड़पने के लिए regex का उपयोग और मुझे लगता है कि मैं अगर बयान मिनट के लिए> 60 रूपांतरण इस afaik के समान करने की जरूरत है):
int TotalHours = HrElapsed + HrStored;
int TotalMinutes = MinElapsed + MinStored;
// Just making sure the minutes don't end up as "141 minutes" so it's incrementing hours.
if (TotalMinutes >= 60)
{
int remainder = TotalMinutes % 60;
int whole = TotalMinutes/60;
TotalMinutes = remainder;
TotalHours = TotalHours + whole;
}
मेरा उत्तर जांचें और मुझे बताएं कि आपकी मदद करने पर मुझे बताएं। – mybirthname