运算符“>=”不能应用于 'string' 和 'int' 类型的操作数
Operator '>=' cannot be applied to operands of type 'string' and 'int'
我是 C# 的新手,一直在寻找有关使用 Int32.Parse、Int32.TryParse、Convert.Int32 等将字符串转换为整数的解决方案。但是我找不到正确的解决方案接近我想要的东西。我在这里找到了类似的 post : Operator '>=' cannot be applied to operands of type 'string' and '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
*符号..和|只是在这里充当间距,Excel文件或文本文件不包含任何这些符号。
说明:
第一行包含 A1 到 E1。
A1 列包含 0.1 至 0.4,B1 至 E1 列以此类推。
我在
行发表了评论
if (words1[t] >= 25 && words1[t] <= 50)
我需要帮助的地方。
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();
}
您的 excel 文件中的值看起来像 double
而不是 int
,因此,您可能需要考虑将其解析为 instead
of [=12] =]喜欢;
double myDoubleWord = double.Parse(words1[t]);
if (myDoubleWord >= 25 && myDoubleWord <= 50)
可以使用 >=
和 <=
运算符将双精度与整数进行比较。
还要注意文化差异,因为您的价值观 .
作为 NumberDecimalSeparator
, double.Parse
uses your CurrentCulture
设置可能 不 适合您的价值观。
这是解析数字的好方法。
if (int.TryParse(words1[t], out int num))
{
//we see test if the string is an number and if it is wi output is as a new int.
if (num >= 25 && num <= 50) //now we can safely do your int comparison without number
{
fidout.WriteLine(words1[t]);
}
}
else //if however our string wasn't capable of being an int we do something else
Console.WriteLine("couldn't parse string ");
我是 C# 的新手,一直在寻找有关使用 Int32.Parse、Int32.TryParse、Convert.Int32 等将字符串转换为整数的解决方案。但是我找不到正确的解决方案接近我想要的东西。我在这里找到了类似的 post : Operator '>=' cannot be applied to operands of type 'string' and '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
*符号..和|只是在这里充当间距,Excel文件或文本文件不包含任何这些符号。
说明: 第一行包含 A1 到 E1。 A1 列包含 0.1 至 0.4,B1 至 E1 列以此类推。
我在
行发表了评论if (words1[t] >= 25 && words1[t] <= 50)
我需要帮助的地方。
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();
}
您的 excel 文件中的值看起来像 double
而不是 int
,因此,您可能需要考虑将其解析为 instead
of [=12] =]喜欢;
double myDoubleWord = double.Parse(words1[t]);
if (myDoubleWord >= 25 && myDoubleWord <= 50)
可以使用 >=
和 <=
运算符将双精度与整数进行比较。
还要注意文化差异,因为您的价值观 .
作为 NumberDecimalSeparator
, double.Parse
uses your CurrentCulture
设置可能 不 适合您的价值观。
这是解析数字的好方法。
if (int.TryParse(words1[t], out int num))
{
//we see test if the string is an number and if it is wi output is as a new int.
if (num >= 25 && num <= 50) //now we can safely do your int comparison without number
{
fidout.WriteLine(words1[t]);
}
}
else //if however our string wasn't capable of being an int we do something else
Console.WriteLine("couldn't parse string ");