【发布时间】:2021-08-21 01:31:11
【问题描述】:
我的示例目录/var/log/application/ 中有一个名为dat 的示例纯文本文件。结构是这样的:
Cat
Dog
Bird
Fish
这是我要分析的数据。我在同一目录中有一个名为var 的第二个文件,其中包含一行I have a dog and a cat!。使用 C#,我想找到在 dat 中的单词在 var 中出现的次数。这应该返回值 2。为此,我用 C# 编写了一个大部分非功能性脚本来解释我的推理。
using System;
using System.IO;
using Systems.Collections.Generic;
namespace Example
{
class Logic
{
static int instances;
static int entries = GetDat();
static string datpath = @"/var/log/application/dat";
static string varpath = @"/var/log/application/var";
static void Main(string[] args)
{
for(i = 0; i <= GetDat; i++)
{
// I made this up because I don't know how to explain it otherwise
if(word.in GetVar instance.in GetDat)
{
instances++
}
return 2;
}
}
static byte[] GetDat()
{
// Get entries from `dat` and turn it into array
}
static byte[] GetVar()
{
System.Collections.Generic.IEnumerable<String> lines = File.ReadLines(varpath);
}
}
}
我该怎么做?有没有更优化的方法来做到这一点?这不区分大小写,类似doggen 的内容不会返回dog 的结果。我不需要使用 StreamReader 或 StreamWriter 流式传输任何内容,并且只处理 ACSII 文本(“abcdefg”,而不是“82&:!:'ehebeodu”)。任何解决(或帮助我解决)这个问题的答案将不胜感激。谢谢!
编辑:新代码!
public static void FindNumberOfSimilarStrings()
{
string[] var = StringOne();
foreach(string line in StringTwo())
{
foreach(string entry in var)
{
if (input.IndexOf(line, StringComparison.OrdinalIgnoreCase) >= 0)
{
Console.WriteLine(line);
instances++;
}
}
}
Console.WriteLine(instances);
}
【问题讨论】:
-
这个需要快吗,内存有问题,
dog是不是匹配dogger,这个是否区分大小写,字边界规则是什么,这个需要处理大吗文件,您需要流式传输吗,Unicode 规则是什么,等等等等等等。总之这个问题有点乏味,缺乏足够的约束,需要大量澄清 -
@TheGeneral 我已经编辑了我的问题以符合适当的资格。不够具体是我的坏事。下次我不会留下细节来假设。感谢您的意见!