【问题标题】:Searching strings in C# - ignore x在 C# 中搜索字符串 - 忽略 x
【发布时间】:2013-09-07 06:01:22
【问题描述】:

我希望为我的企业创建一个程序。

我会有一组数据,比如

Post to:
FirstName LastName
Their Address
Their Address
Australia

MORE RANDOM WORDS/DATA (such as the item they ordered)

我想做的是在“Post to:”和“Australia”之间创建一个字符串。我将如何做这件事,因为我可能有 30 个客户,这意味着 30 个(邮寄到:)和(澳大利亚)。我希望将它们中的每一个分开并最终将它们复制到剪贴板。

我将为此使用 Windows 窗体。

编辑:我认为创建一个从数组返回数据的方法可以做到这一点。我将如何进行搜索。

【问题讨论】:

    标签: c# windows string forms search


    【解决方案1】:

    您可以简单地根据 Post to & 进行拆分,然后您将获得一系列项目 + 澳大利亚 + 您不感兴趣的项目 然后作为对所有元素的第二步,我将在“”上拆分并执行一次操作,直到它与澳大利亚匹配,这给了你你想要的东西,但作为一个单词序列 作为最后一步,您将重新组合这些字符串,所有这些都非常低效,但是对于您提到的少量数据,它将非常快速且非常易于编写/维护。

    这是一些伪代码

    var s = file.ReadToEnd(yourfile);
    s.Split(new string[]{"Post to"}) // Split on post to to get an array of string with 1 string per customer
         .Select(item=>item.Split(new char[]{' '}) // split on each word so that we can find australia
               .TakeUntill(substring => substring == "Australia") // take all the words untill we find australia, then stop
               .Aggregate((a,b)=>a+" " + b)// rebuild the string by summing all those words preceeding australia
               );
    

    【讨论】:

    • 这是否会保留格式(例如“发布到”和名字之间的新行?
    • 是的,因为我们没有触摸它们,但是它会一起删除多个“”,因为它会删除所有出现的空白,并且之后只添加一个空白,例如“测试(这里有很多空白)字符串" 会变成 "test string" (只是编辑了这个,因为评论也不允许有多个空格)
    • 谢谢 :) 但是,当我在获取第一组数据后循环此操作时,如何忽略第一组并“捕获”第二组?
    • 我不确定你的意思,如果你的问题是关于如何获得第二第三等客户,代码已经做到了,这段代码为你提供了一个包含内容的字符串数组你非常想要。 (未经测试)
    • 哦,对了,我现在明白了。我会试一试,让您知道,也感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 2011-03-01
    相关资源
    最近更新 更多