YPC*_*Cor 0 c# arrays string int streamreader
我对 C# 很陌生,一直在寻找有关使用 Int32.Parse、Int32.TryParse、Convert.Int32 等将字符串转换为整数的解决方案。但是我找不到合适的解决方案来接近我想要的。我在这里找到了一个类似的帖子:运算符 '>=' 不能应用于 'string' 和 'string' 类型的操作数,但仍然找不到正确的解决方案。
这是我正在尝试编码的内容的简要说明。
打开名为“compare.xls”的 Excel 文件,读取文件并写入名为“tline.txt”的文本文件
然后打开文本文件“tline.txt”,逐行读取文本,只写入带有条件语句的名为“mkmatlab.txt”的文本文件。条件语句:如果从该行读取的数字为 25 <= x <= 50,则将其写入“mkmatlab.txt”(仅当它是整数时才写入文件)。
Excel文件中的内容的一个想法:
A1..| B1....... | C1........ | D1........| E1........|
0.1 |10.2000 |53.6000 |52.7894 |24.9608
0.2 |26.8209 |55.0851 |56.4726 |35.8431
0.3 |10.1009 |56.0314 |56.5013 |27.8922
0.4 |17.7008 |60.0054 |59.7650 |37.8018
Run Code Online (Sandbox Code Playgroud)
*符号 .. 和 | 只是在这里充当间距,Excel 文件或文本文件不包含任何这些符号。
说明:第一行包含 A1 到 E1。对于列 A1,包含 0.1 到 0.4,对于列 B1 到 E1,依此类推。
我在线上有评论
if (words1[t] >= 25 && words1[t] <= 50)
Run Code Online (Sandbox Code Playgroud)
我需要帮助的地方。
StreamReader fidin = File.OpenText(@"C:\Users\Student\Downloads\compare.xls");
StreamWriter tline = File.CreateText(@"C:\Users\Student\Downloads\tline.txt");
string F = fidin.ReadToEnd();
fidin.Close();
string[] words = F.Split(';');
Array.Sort(words);
for (int f = 0; f < words.Length; f++)
tline.WriteLine(words[f]);
tline.Close();
StreamReader tline1 = File.OpenText(@"C:\Users\Student\Downloads\tline.txt");
StreamWriter fidout = File.CreateText(@"C:\Users\Student\Downloads\mkmatlab.txt");
string T = tline1.ReadToEnd();
tline1.Close();
string[] words1 = T.Split(';');
Array.Sort(words1);
int counter = 0;
string line;
while ((line = tline1.ReadLine()) != null)
{
System.Console.WriteLine(line);
fidout.WriteLine(line);
counter++;
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
您的 excel 文件中的值看起来像double而不是int,因此,您可能需要考虑将其解析instead为int类似的两倍;
double myDoubleWord = double.Parse(words1[t]);
if (myDoubleWord >= 25 && myDoubleWord <= 50)
Run Code Online (Sandbox Code Playgroud)
将 double 与整数进行比较可以使用>=and<=运算符。
还要注意文化差异,因为您的价值观.作为NumberDecimalSeparator,double.Parse使用您的CurrentCulture设置可能不适合您的价值观。