【问题标题】:Find letters from an a.txt file in a b.txt file C#在 b.txt 文件 C# 中从 a.txt 文件中查找字母
【发布时间】:2019-08-06 02:52:02
【问题描述】:

此时我正在上传 2 个 txt 文件。在文件“A”中,我有一个字母列表,在文件“B”中,我有几个单词,我正在阅读这两个文件,并将它们添加到列表中。目标是根据“A”文件的字母来查找是否可以从“B”文件中组成单词。示例:

“A”文件的内容: 乙 乙 是的 ○ 磷 D R 乙 一个

“B”文件的内容: 波贝达, 钴

在这种情况下,在 POBEDA 中找到的单词

我正在使用网络服务来执行该过程

这是网络服务:

public class WebService : System.Web.Services.WebService
    {

        [WebMethod]
        public string Leerdata()
        {


            var path = Directory.EnumerateFiles(@"C:\Users\thoma\source\repos\NewShoreApp\NewShoreApp\Data\", "*.txt");

            List<string> list = path.ToList();
            Parallel.ForEach(path, current =>
            {
                string[] lines = File.ReadAllLines(current);

                list.AddRange(lines.ToList());
            });


            return String.Join(",", list);


            }

    }

这是控制器:

namespace NewShoreApp.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {

            return View();
        }


        [HttpPost]
        public ActionResult Index(HttpPostedFileBase[] files)
        {

            if (ModelState.IsValid)
            {
                try
                {
                    foreach (HttpPostedFileBase file in files)
                    {
                        if (file != null)
                        {
                            var ServerPath = Path.Combine(Server.MapPath("~/Data"), Path.GetFileName(file.FileName));

                            file.SaveAs(ServerPath);
                        }
                    }                    
                    ViewBag.FileStatus = "File uploaded successfully.";
                }

                catch (Exception)   
                {

                    ViewBag.FileStatus = "Error while file uploading.";
                } 

            }
            return View("Index");
        }


    }
}

这是模型:

namespace NewShoreApp.Models
{
    public class Data
    {
        // 
        [DataType(DataType.Upload)]
        [Display(Name = "Upload File")]
        [Required(ErrorMessage = "Please choose file to upload.")]
        public HttpPostedFileBase[] files { get; set; }

    }
}

【问题讨论】:

  • 你有什么问题?
  • @madreflection 检查你给我的字母我能不能做这个词
  • @Michael Randall 感谢您的推荐
  • 关键是将其分解为两个单独的任务,从文本文件中读取所有文本,并比较两个字符串中的字符。File.ReadAllText 将为您提供第一个...(我修改了此评论是因为大量错别字)

标签: c# asp.net asp.net-mvc web-services asmx


【解决方案1】:

只是一个简单的算法来解决您的问题。

(你可以改进这个算法,这个算法仅供参考)

文件“A”和“B”的匹配过程如下:

  1. 从文件“B”中读取一个单词
  2. 将该单词拆分为字符数组
  3. 将该字符数组的每个元素与文件“A”的所有字符进行比较
    • 如果在文件“A”中找到所有字符并且 在字符数组中,没有任何其他字符可以匹配(在“A”文件中找不到) 那么它将被视为“未找到”
    • 如果在“A”文件和字符数组中找到所有字符, 没有其他字符可以匹配那么它将被视为“找到”
  4. 从文件“B”中获取下一个单词
    • 如果文件“B”中有下一个单词,则重复步骤 2 和 3
    • 如果文件“B”中没有下一个单词,那么您已经完成 文件“A”和“B”之间的匹配过程。所以终止这个过程。

【讨论】:

  • 我将使用以下方法:从文件 A 中读取字符,将它们添加到字典中(使用字符作为键,并使用 true 或出现次数作为值,具体取决于要求)。然后从文件 B 中读取单词,并且对于每个单词,检查每个字母是否在字典中(如果需要,是否已经用完字典中的所有匹配项);如果每个字母的校验都是肯定的,则可以形成单词,否则不能形成单词。一旦你有了这个功能,把它包装在一个网络服务中可能很容易。
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
相关资源
最近更新 更多