Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何仅从win表单中的文本文件中提取数字?_C# - Fatal编程技术网

C# 如何仅从win表单中的文本文件中提取数字?

C# 如何仅从win表单中的文本文件中提取数字?,c#,C#,这就是我的文本文件的外观(示例) 我希望它只提取数字,然后把数字加在一起,并把它放在标签或其他东西上 我试过了 foreach(int number in "money.txt"){ int sum = number + number; label5.Text = sum.ToString(); } 但这似乎不起作用 var summ = 0; var file = File.ReadAllLines("file.txt"); foreach (var line in file

这就是我的文本文件的外观(示例)

我希望它只提取数字,然后把数字加在一起,并把它放在标签或其他东西上 我试过了

foreach(int number in "money.txt"){
    int sum = number + number;
    label5.Text = sum.ToString();
}
但这似乎不起作用

var summ = 0;
var file = File.ReadAllLines("file.txt");
foreach (var line in file)
    {
        var number = int.Parse(line.Split(":")[0]);
        summ += number;
    }
    label5.Text = summ.ToString();

类似的东西可以作为基础,您可以根据需要使用。

这是一个更简单的解决方案

  • 读入文件
  • 分析字符串的第一个元素(用:)拆分
  • 总结一下

  • 非常重要

    您的代码:

    foreach(int number in "money.txt"){
        int sum = number + number; // BIG ERROR
        label5.Text = sum.ToString();
    }
    
    你犯了一个很大的错误,
    int sum=number+number

    首先将
    sum
    带出您的范围(可能是
    global

    您必须执行两个步骤:

    在线试试这个

    步骤1:读取文件的内容:

    using System.IO;
    
    // Your code
    static string yourTextFileContent = File.ReadAllText("money.txt");
    
    第二步:我写了一个方法来完成你的工作:

    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.IO;
    
    public class Program
    {
        // Demo string
        static string yourMoney = @"28:Toy
    1:Chocolate bar
    10:Water bottle";
        // Your real string
        //static string yourTextFileContent = File.ReadAllText("money.txt");
        public static void Main()
        {
            Console.WriteLine("Using IEnumerable");
            // int sum = 0;
            foreach (int item in GetEnumerableIntFromString(yourMoney))
            {
                sum += item;
                Console.WriteLine(item);
            }
            Console.WriteLine($"Sum: {sum}");
            //label5.Text = sum.ToString();
        }
    
        // Using IEnumerable
        private static IEnumerable<int> GetEnumerableIntFromString(string str)
        {
            string[] splitLine = str.Split(new[]{'\r','\n'},StringSplitOptions.RemoveEmptyEntries);
            foreach(string item in splitLine)
            {
                string[] splitToGetNumber = item.Split(new[]{':'},StringSplitOptions.RemoveEmptyEntries);
                yield return Convert.ToInt32(splitToGetNumber[0].Trim());
            }
        }
    }
    

    获取错误“无法将字符转换为字符串”当我单击它时,它会将我带到foreach关键字。我创建了一个简单的应用程序来尝试它。这个代码对我有用。变量summ与文件中的数字总和相同。在这种情况下,变量是什么?-因为我想把它贴在标签上。@leonlejunchen这能回答你的问题吗?如果回答了,请标记它。这是否回答了您的问题?使一项简单的任务过于复杂。
    using System.IO;
    
    // Your code
    static string yourTextFileContent = File.ReadAllText("money.txt");
    
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.IO;
    
    public class Program
    {
        // Demo string
        static string yourMoney = @"28:Toy
    1:Chocolate bar
    10:Water bottle";
        // Your real string
        //static string yourTextFileContent = File.ReadAllText("money.txt");
        public static void Main()
        {
            Console.WriteLine("Using IEnumerable");
            // int sum = 0;
            foreach (int item in GetEnumerableIntFromString(yourMoney))
            {
                sum += item;
                Console.WriteLine(item);
            }
            Console.WriteLine($"Sum: {sum}");
            //label5.Text = sum.ToString();
        }
    
        // Using IEnumerable
        private static IEnumerable<int> GetEnumerableIntFromString(string str)
        {
            string[] splitLine = str.Split(new[]{'\r','\n'},StringSplitOptions.RemoveEmptyEntries);
            foreach(string item in splitLine)
            {
                string[] splitToGetNumber = item.Split(new[]{':'},StringSplitOptions.RemoveEmptyEntries);
                yield return Convert.ToInt32(splitToGetNumber[0].Trim());
            }
        }
    }
    
    Enumerable<int> enumerable = yourEnumerable;
    List<int> asList = enumerable.ToList();