Tag: 解析

C#中的快速字符串解析

在C#中解析字符串的最快方法是什么? 目前我只是使用字符串索引( string[index] )并且代码运行合理,但我不禁想到索引访问器所做的连续范围检查必须添加一些内容。 所以,我想知道我应该考虑采用哪些技术来提升它。 这些是我最初的想法/问题: 使用string.IndexOf()和IndexOfAny()方法查找感兴趣的字符。 这些比通过string[index]手动扫描字符串更快吗? 使用正则表达式。 就个人而言,我不喜欢正则表达式,因为我发现它们难以维护,但这些可能比手动扫描字符串更快吗? 使用不安全的代码和指针。 这将消除索引范围检查,但我已经读过不安全的代码不会在不受信任的环境中运行。 究竟是什么意思呢? 这是否意味着整个程序集不会加载/运行,或只是标记为不安全的代码拒绝运行? 该库可能会在许多环境中使用,因此能够回退到更慢但更兼容的模式会很不错。 我还能考虑什么? 注意:我应该说,我正在解析的字符串可能相当大(比如30k),而且是自定义格式,没有标准的.NET解析器。 此外,这段代码的表现并不是非常关键,所以这部分只是一个好奇心的理论问题。

在C#中编写部分SQL

我需要解析部分SQL查询(它是用于SQL注入审计工具)。 例如 ‘1’ AND 1=1– 应该分解成令牌 [0] => [SQL_STRING, ‘1’] [1] => [SQL_AND] [2] => [SQL_INT, 1] [3] => [SQL_AND] [4] => [SQL_INT, 1] [5] => [SQL_COMMENT] [6] => [SQL_QUERY_END] 他们至少是基于我的SQL的词法分析器,还是C#的bison等任何好的工具(尽管我不想编写我自己的语法,因为我需要支持大多数,如果不是所有MySQL 5的语法)

解析电子邮件地址字符串的最佳方法

所以我正在使用一些电子邮件标题数据,并且对于:,from:,cc:和bcc:字段,电子邮件地址可以用多种不同的方式表示: First Last Last, First name@domain.com 这些变体可以以任何顺序出现在同一个消息中,所有这些变量都以逗号分隔的字符串forms出现: First, Last , name@domain.com, First Last 我一直试图想出一种方法来将这个字符串解析成单独的名字,姓氏,每个人的电子邮件(如果只提供了一个电子邮件地址,则省略名称)。 有人可以建议最好的方法吗? 我试图在逗号上拆分,除了在第一个放置姓氏的第二个例子之外,它会起作用。 我想这个方法可以工作,如果我拆分后,我检查每个元素,看它是否包含’@’或”,如果没有,那么可以假设下一个元素是名字。 这是解决这个问题的好方法吗? 我是否忽略了地址可能存在的另一种格式? 更新:也许我应该澄清一点,基本上我要做的就是将包含多个地址的字符串拆分为包含地址的单个字符串,无论发送的格式是什么。我有自己的方法来validation和提取信息从一个地址来看,找出分隔每个地址的最佳方法对我来说简直太棘手了。 这是我想出的解决方案: String str = “Last, First , name@domain.com, First Last , \”First Last\” “; List addresses = new List(); int atIdx = 0; int commaIdx = 0; int lastComma = 0; for (int c = […]

如何从C#中的HTML文件中提取图像URL

任何人都可以通过解释如何从C#中的HTML文件中提取图像URL来帮助我

HtmlAgilityPack设置节点InnerText

我想用另一个文本替换HTML标签的内部文本。 我正在使用HtmlAgilityPack 我使用此代码提取所有文本 HtmlDocument doc = new HtmlDocument(); doc.Load(“some path”) foreach (HtmlNode node in doc.DocumentNode.SelectNodes(“//text()[normalize-space(.) != ”]”)) { // How to replace node.InnerText with some text ? } 但是InnerText是只读的。 如何用其他文本替换文本并将其保存到文件?

开源数学表达式解析器?

我用Google搜索并且空白了 – 所以是时候再次测试那些好人了! 🙂 任何人都可以推荐一个解析和计算数学表达式的开源库(pref for .NET)吗? 例如,输入表达式= “2+(n-1)*4” ,参数键/值n=2 ,输出= 6 。

简单的xml解析

什么是解析lat和long以下xml片段的最简单方法。 没有名称空间等。 它是一个字符串变量。 不是流。 stockholm sweden 51.1 67.98 我到目前为止所阅读的所有内容都过于复杂,不应该是一个简单的任务,例如http://geekswithblogs.net/kobush/archive/2006/04/20/75717.aspx 我一直在看上面的链接 当然在.net中有一种更简单的方法可以做到这一点?

解析if-else if语句算法

我正在尝试为if-else类型结构创建一个非常简单的解析器,它将构建并执行SQL语句。 我会测试构建字符串的条件,而不是测试执行语句的条件。 一个例子是: select column1 from #if(VariableA = Case1) table1 #else if(VariableA = Case2) table2 #else defaultTable #end 如果VariableA等于Case1,则结果字符串应为: select column1 from table1 一个更复杂的例子是嵌套的if语句: select column1 from #if(VariableA = Case1) #if(VariableB = Case3) table3 #else table4 #else if(VariableA = Case2) table2 #else defaultTable #end 这是我真正遇到麻烦的地方,我想不出一个正确识别每个if-else-end组的好方法。 另外,我不确定跟踪“else”子句中的字符串是否应该评估为true的好方法。 我一直在网上寻找不同类型的解析算法,所有这些算法看起来都非常抽象和复杂。 对于这个非计算机科学专业,有什么建议吗?

PDF解析提取CheckBox字段值

我有一个PDF Documnet,想从PDF和Chackbox和单选按钮类型字段值中提取内容。 PDF文件的版本为1.4(Acrobat 5.x),可以从Web浏览器生成。 CheckBox在PDF中显示此类型 我想找到已选中的复选框值但是没有任何API和工具成功解析为此类复选框字段值,我只是成功从PDF中提取文本。 和复选框无法通过API识别Checked值。 如果有人知道如何提取以及哪种API应该适用于此类PDF文件。 请建议我。 提前致谢

解析大字符串的最快方法(multithreading)

我即将开始一个项目,它将获取文本块,将大量数据解析为某种对象,然后可以对其进行序列化,存储和统计/数据收集。 这需要尽可能快,因为我需要启动超过10,000,000个文本块,并且每天将获得100,000个成千上万的文本。 我在具有12个核心+超线程的系统上运行它。 我也可以访问/了解CUDA编程,但对于字符串的东西认为它不合适。 从每个字符串我需要解析大量的数据,其中一些我知道确切的位置,有些我不知道,需要使用正则表达式/智能的东西。 所以考虑这样的事情: object[] parseAll (string [] stringsToParse) { parallel foreach parse( string[n] ) } object parse(string s) { try to use exact positions / substring etc here instead of regex’s } 所以我的问题是: 使用正则表达式来减少多少速度。 .NET会比其他语言慢得多吗? 我可以做什么样的优化(如果有的话)来最大化并行性。 还有什么我还没考虑过吗? 谢谢你的帮助! 对不起,如果这是漫长的啰嗦。