Tag: 解析

为什么string.Empty比“”更推荐?

为什么string.Empty比””更推荐? 是因为当编译器解析代码并且”来了,编译器将准备好读取字符串?但是在string.Empty中编译器甚至不准备读取字符串?

解析TSV文件

我需要解析TSV格式的文件(制表符分隔值)。 我使用正则表达式将文件分解为每一行,但我找不到令人满意的解析每一行。 现在我来了: (?(“[^”]+”)+|[^\t]+) 但如果该行中的项目具有超过2个连续的双引号,则它不起作用。 以下是文件的格式:每个元素由制表分隔。 如果某个项目包含一个标签,则该标签包含双引号。 如果项目包含双引号,则会加倍。 但有时一个元素包含4个连续双引号,上面的正则表达式将元素分成2个不同的元素。 例子: item1ok“item”“2”“oK” 正确解析为2个元素: item1ok和项目“2”ok (修剪不必要的引号后),但是: item1oK“item”“”“2oK” 被解析为3个元素: item1ok , item和“2ok (再次修剪后)”。 有谁知道如何让正则表达式适合这种情况? 或者是否有另一种解决TSV的解决方案? (我在C#中这样做)。

如何将当前执行状态推送到堆栈中以便以后可以继续执行?

想象一个简单的语法: (a|ab)c 其中读取(a或ab)后跟c。 解析树看起来像这样: and / \ or c / \ a ab 现在给它这个输入: abc 我们首先遍历树的左侧,然后匹配“a”,然后返回一个级别。 由于“a”匹配,“或”也是如此,因此转到“c”。 “c”不匹配,我们走到了尽头。 但它可以采取另一条路径; 如果我们走到“ab”,我们就会找到一场比赛。 所以我想要为“或”节点做的基本上是这样的: 评估左分支 如果左分支不匹配,请尝试右分支 如果左匹配匹配,则将当前状态推送到堆栈,以便我们可以在以后必要时继续 然后每当解析器遇到死胡同时,我想从堆栈中弹出一个项目并再次从那里继续。 这是我无法弄清楚的部分……我如何基本上保存当前的调用堆栈? 我可以将“ab”节点保存在堆栈中,这样我就知道我必须接下来执行那个节点,但是之后它仍然需要知道它需要后退到“或”。 我认为克里斯有所作为。 我们必须找到一种翻译树的方法,这样就不必像这样跳过树枝。 例如,这个等效的解析树没有这个问题: or / \ and and / \ / \ ac ab c 这次我们解析左边,点击“a”,它通过,所以我们尝试旁边的“c”节点,失败,“和”失败,“或”必须尝试正确的分支,……“ab “通过,另一个”c“通过,然后整个表达通过。

从字符串名称返回FontStyle

我想写一个函数,它将返回FontStyle并将字符串作为参数 FontStyle f = function (“Italic”); // FontStyles.Italic 我不想写Switch case或if else语句来做同样的事情。 它可以用不区分大小写的字符串吗? FontStyle f = function (“italic”); FontStyle f = function (“itAlic”); 应该返回相同。

C#电子邮件主题解析

我正在构建一个用C#读取电子邮件的系统。 我在解析主题时遇到了问题,我认为这个问题与编码有关。 我正在阅读的主题如下: =?ISO-8859-1?Q?=E6=F8sd=E5f=F8sdf_sdfsdf?= ,发送的原始主题是æøsdåføsdf sdfsdf (那里有挪威字符)。 我有什么想法可以改变编码或正确解析它? 到目前为止,我已经尝试使用C#编码转换技术将主题编码为utf8,但没有任何运气。 这是我尝试过的解决方案之一: Encoding iso = Encoding.GetEncoding(“iso-8859-1”); Encoding utf = Encoding.UTF8; string decodedSubject = utf.GetString(Encoding.Convert(utf, iso, iso.GetBytes(m.Subject.Split(‘?’)[3])));

将字符串解析为十进制,逗号和句点

如何将字符串解析为十进制,以便它适用于两种格式 – w /逗号和句点? [Fact] public void foo(){ var a=”1,1″; var b=”1.1″; Assert.Equal(Parse(a),Parse(b)); } private decimal Parse(string s){ return decimal.Parse(s,NumberStyles.Any, CultureInfo.InvariantCulture); } 输出: Test ‘Unit.Sandbox.foo’ failed: Assert.Equal() Failure Expected: 11 Actual: 1,1

解析具有名称 – 值对的字符串

如何在C#中解析以下名称 – 值对的字符串: string studentDetail = “StudentId=J1123,FirstName=Jack,LastName=Welch,StudentId=k3342,FirstName=Steve,LastName=Smith” 解析此数组的目的是使用Linq to SQL在DB中插入值: [HttpPost()] public ActionResult SaveStudent(string studentDetail) { DataContext db = new DataContext(); Student student = new Student(); { student.StudentID = //StudentID student.FirstName = //FirstName student.LastName = //LastName }; db.Student.InsertOnSubmit(student); db.SubmitChanges(); return View(); } 接近这个的最佳方法是什么?

用于.NET的C代码解析器

有谁知道.NET的任何C解析器库? (我打算将C代码解析为某种forms的对象图,因此我可以将其转换为另一种语言。)

如何删除某个字符最后一次重复后的所有文本

给定任何字符串,我想删除特定字符后的任何字母。 这个字符可能在字符串中多次出现,我只想将它应用于最后一次出现。 所以我们说“/”是字符,这里有一些例子: http://www.ibm.com/test ==> http://www.ibm.com 你好/测试==>你好

Enum.Parse()或Switch

要将字符串转换为枚举,以下哪种方式更好? 这段代码: colorEnum color = (colorEnum)Enum.Parse(typeof(colorEnum), “Green”); 或这个: string colorString = … colorEnum color; switch (colorString) { case “Green”: color = colorEnum.Green; break; case “Red”: color = colorEnum.Red; break; case “Orange”: color = colorEnum.Orange; break; …. }