如何在 C# 中有效地从文本文件中读取整数

发布于 2024-10-16 06:30:26 字数 331 浏览 4 评论 0原文

在 C++ 中,我们可以定义一个自定义区域设置,使流对象能够忽略文件中的非数字,并仅读取整数。

我们可以做类似的事情吗?我们如何有效地从文本文件中读取整数? C# 流对象是否使用区域设置?如果是,我们是否可以定义可与流对象一起使用的自定义区域设置,以便在读取文件时忽略不需要的字符?


下面是一个 C++ 示例,它可以有效地计算文本文件中单词的频率:

计算文件中单词出现频率的优雅方法

In C++, we can define a custom locale that enables stream object to ignore non-digits in the file, and reads only the integers.

Can we do something similar? How can we efficiently read only integers from a text file? Does C# stream object use locale? If yes, can we define custom locale that we can use with stream object so as to ignore unwanted characters while reading the file?


Here is one example in C++ which efficiently counts frequency of words in a text file:

Elegant ways to count the frequency of words in a file

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橙幽之幻 2024-10-23 06:30:26

我的建议:

            public void ReadJustNumbers()
            {
                Regex r = new Regex(@"\d+"); 
                using (var sr = new StreamReader("xxx"))
                {
                    string line;
                    while (null != (line=sr.ReadLine()))
                    {
                        foreach (Match m in r.Matches(line))
                        {
                            Console.WriteLine(m.Value);
                        }
                    }
                }
            }

其中 xxx 是文件名,显然您将以比在控制台上转储更优雅的方式使用匹配的数字;)

My proposal:

            public void ReadJustNumbers()
            {
                Regex r = new Regex(@"\d+"); 
                using (var sr = new StreamReader("xxx"))
                {
                    string line;
                    while (null != (line=sr.ReadLine()))
                    {
                        foreach (Match m in r.Matches(line))
                        {
                            Console.WriteLine(m.Value);
                        }
                    }
                }
            }

where xxx is the file name, obviously you will use the matching digit in a more elegant way than dumping on the console ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文