【问题标题】:How to find minimum replacement strings or regex to convert string to another string如何找到最小替换字符串或正则表达式以将字符串转换为另一个字符串
【发布时间】:2017-02-23 09:33:58
【问题描述】:

好吧,标题可能不正确,但这是我最好的选择

我的问题是这个

示例 1

see , saw

我可以使用 as 将 see 转换为 saw

ee 替换为aw

        string srA = "see";
        string srB = "saw";

        srA = srB.Replace("aw", "ee");

或者说

show , shown

n 添加到原始字符串

现在我想要的是,用最少的代码长度,为任何比较的字符串生成这样的过程

正在寻找您的想法,我该如何实现?我可以自动生成正则表达式来应用和转换吗?

c#6

【问题讨论】:

  • 一般概念简称为Edit Distance
  • @Damien_The_Unbeliever 你将如何应用编辑距离来自动将 1 转换为另一个 :)
  • 我是在指出这个一般概念有一个名称,并指向它。对于您要解决的实际问题,我想目前对我来说没有多大意义 - 如果您有两个特定的字符串,知道 如何 您可以在它们之间进行转换某种意义上,但生成执行转换的代码对我来说并不多——因为你已经有了转换的最终结果。
  • @Damien_The_Unbeliever 它的意义是这样的。考虑到有数百万个字符串,其中许多需要相同的操作。所以我可以定义操作并给他们ID。我只能保存该特定字符串的操作 ID,而不是保存整个操作或 1 对 1 保存。这将节省大量空间

标签: c# .net regex string .net-4.6


【解决方案1】:

检查diffplex,看看它是否是您需要的。如果您想创建自定义算法,而不是使用 3rd 方库,只需查看代码即可 - 它是开源的。

您可能还想检查 this 的优化工作,但它可能会变得复杂。

还有Diff.NET

另外,this blog post 是实现差异工具系列的一部分。

如果您只是想了解有关该主题的更多信息,则应将您的谷歌搜索工作定向到 Levenshtein 算法

我只能假设您的最终目标是什么,以及您愿意为此投入多少时间,但我相信第一个库应该足以满足大多数需求。

【讨论】:

  • 回答问题。我真的受空间限制,所以我需要以极简主义的方式存储操作。就像函数替换或正则表达式一样。如果有一个非常酷的正则表达式生成器。
  • 从这个答案来看,不存在,不幸的是stackoverflow.com/questions/10086332/…
猜你喜欢
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2013-01-21
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多