我正在尝试编写可以在markdown文件中搜索任何纯文本单词或短语的代码(在C#中)。目前我通过一个冗长的方法来做到这一点:将markdown转换为HTML,从HTML文本中删除HTML元素标签,然后使用简单的正则表达式搜索相关单词/短语。不用说,这可能很慢。
一个具体的例子可能会显示问题。说降价文件包含
Something ***significant***
我希望能够通过提供搜索词组something significant
(即忽略***
)来找到它。
是否有一种有效的方法(即避免转换为HTML)并且不会让我编写自己的降价解析器?
修改 我想要一种通用的方法来搜索包含任何有效降价格式的降价文本中的任何文本或短语。第一个答案是匹配我给出的具体文本示例的方法。
修改
我应该说清楚:这对于简单的面向用户的搜索是必需的,并且markdown文件可以包含任何有效的markdown格式。出于这个原因,我需要能够忽略用户在将markdown转换为HTML时不会将其视为文本的降价中的任何内容。例如。在搜索过程中应该跳过指定图像的降价文本(如![Valid XHTML](http://w3.org/Icons/valid-xhtml10).
)。转换为HTML会为用户产生不错的结果,因为它可以合理准确地反映用户看到的内容(但它只是一个缓慢的解决方案,尤其是当需要查看大量降价文本时)。
答案 0 :(得分:0)
使用正则表达式
var str = "Something ***significant***";
var regexp = new Regex("Something.+significant.+");
Console.WriteLine(regexp.Match(str).Success);
答案 1 :(得分:0)
我想做同样的事情。我想到了一种实现此目标的方法。
您的方法有两个步骤。
现在,如果降价来源保留在数据存储中,那么您也可以仅出于搜索目的而保留纯文本。因此,从Markdown提取纯文本的步骤仅在持久化Markdown源时(或每次Markdown源更新时)才执行一次,但实际上在Markdown中搜索的代码可以在已经持久的平原上立即执行文本数据次数不限。
例如,如果您的关系数据库的列类似markdown_text
,则还可以创建plain_text
列,并在每次更改markdown_text
列时重新创建其值。 / p>
如果保存降价时间比以前花费了几毫秒(甚至几秒钟),用户将不会感到烦恼。当改变系统状态的某些事情花费一些时间(他们觉得系统中确实发生了某些事情)而不是立即发生(他们觉得某些地方出了错并且他们的命令没有执行)时,用户往往会感到安全。但是,如果搜索花费了几毫秒才能完成,他们会感到沮丧。通常,用户希望查询立即完成,但是命令要花费一些时间(不过不超过几秒钟)。
答案 2 :(得分:-1)
试试这个:
string input = "Something ***significant***";
string v = input.Replace("***", "");
Console.WriteLine(v)
看一下这个例子:enter link description here