CamelCase转换为友好名称,即Enum常量; 问题?

在我对这个问题的回答中 ,我提到我们使用UpperCamelCase解析来获取未使用Description属性修饰的枚举常量的描述,但它很幼稚,并且在所有情况下都不起作用。 我重温了它,这就是我想出的: var result = Regex.Replace(camelCasedString, @”(?(?<!^)[AZ][az])", @" ${a}"); result = Regex.Replace(result, @"(?[az])(?[A-Z0-9])”, @”${a} ${b}”); 第一个替换查找大写字母,后跟小写字母,EXCEPT,其中大写字母是字符串的开头(以避免必须返回和修剪),并添加前面的空格。 它处理您的基本UpperCamelCase标识符,并领导像FDICInsured这样的全高级缩写词。 第二个替换查找小写字母后跟一个大写字母或数字,并在两者之间插入一个空格。 这是为了处理特殊但常见的中间或尾随首字母缩略词或标识符中的数字(除了前导数字,通常在C风格的语言中都是禁止的)。 运行一些基本的unit testing,这两个组合正确地分离了以下所有标识符:NoDescription,HasLotsOfWords,AAANoDescription,ThisHasTheAcronymABCInTheMiddle,MyTrailingAcronymID,TheNumber3,IDo3Things,IAmAValueWithSingleLetterWords和Basic(没有添加任何空格)。 因此,我首先发布此信息,与其他可能认为有用的人分享,然后再问两个问题: 任何人都会看到一个符合常见的CamelCase-ish约定的案例,这种方式不能正确地分成友好的字符串吗? 我知道它不会将相邻的首字母缩略词(FDICFCUAInsured)分开,重新调整“正确”的像CamedCased类似的首字母缩略词,或大写一个lowerCamelCased标识符的第一个字母(但那个很容易添加 – result = Regex.Replace(result, “^[az]”, m=>m.ToString().ToUpper()); )。 还要别的吗? 任何人都可以看到一种方式来做出这样的陈述,或者更优雅吗? 我正在寻找组合替换调用,但由于他们对匹配执行两个不同的事情,因此无法使用这两个字符串完成。 它们可以组合成一个方法链,在String上使用RegexReplace扩展方法,但任何人都可以想到更好吗?

无法将类型’string’隐式转换为’System.Windows.Forms.TextBox’

我不知道该怎么办,因为错误发生在Form1.Designer.cs ,因为我没有调试程序部分的经验。 //Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(352, 246); this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox1); this.Font = new System.Drawing.Font(“Tahoma”, 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = “Form1”; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = “Generate Username”; this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); this.ResumeLayout(false);

在字符串上使用Razor引擎 – 而不是视图

我想使用没有视图(cshtml)文件的Razor引擎,但是在字符串上。 我想从MVC中做到这一点,我见过使用过的例子 new RazorViewEngine().Render 但是我找不到渲染方法,它是从MVC的旧时代开始的吗? 我也看过使用Razor.Parse的例子,但我也找不到它 – 可能错过了一个引用(但是如果我已经使用MVC那就应该存在,对吧?) 如果我需要做的就是在HTML字符串中注入3-4个参数,是否可以使用Razor? 我觉得我现在对MVC有点迷恋,可能不会直接思考。 我打算在内存中缓存HTML字符串,只从DB中传入模型。 谢谢

c#在不停止应用的情况下读取用户输入

我知道我可以使用ReadKey,但它会冻结应用程序,直到用户按下一个键。 是否有可能(在控制台应用程序中)运行一些循环仍然能够做出反应? 我只能想到事件,但不知道如何在控制台中使用它们。 我的想法是循环将在每次迭代期间检查输入。

C#WinForms TreeView删除水平滚动条

我需要一个只有垂直滚动条的TreeView。 我尝试了这个,但它不起作用,生成的滚动条根本不做任何事情。 我尝试了相反的方法(可滚动到true并禁用具有user32.dllfunction的水平滚动条) – 它不起作用,当我向TreeView添加足够长的东西时滚动条再次显示…

构建简单的RSS阅读器,检索内容

我正在尝试使用SyndicationFeed类创建一个简单的RSS阅读器。 有一些标准标签,如 , , ……它们没有问题。 但是还有其他一些标签。 例如,在由WordPress创建的此Feed中 ,有标记。 我认为其他网站的内容部分可能还有其他标签。 对? 我想知道,如何找到每个post的主要内容,有没有标准? 我应该寻找哪些标签? (例如,一个站点可能使用但是其他一些只使用或者有人使用另一个标准…我不知道如何检索post的主要内容) PS:我正在使用此代码测试我的简单RSS阅读器: var reader = XmlReader.Create(“http://feed.2barnamenevis.com/2barnamenevis”); var feed = SyndicationFeed.Load(reader); string s = “”; foreach (SyndicationItem i in feed.Items) { s += i.Title.Text + “” + i.Summary.Text + “” + i.PublishDate.ToString() + “”; foreach (SyndicationElementExtension extension in i.ElementExtensions) { XElement ele = extension.GetObject(); […]

如何从字符串中删除字符的确切出现?

例如,我有一个字符串,如: string str = “santhosh,phani,ravi,phani123,praveen,sathish,prakash”; 我想从str删除,phani 。 现在,我正在使用str = str.Replace(“,phani”, string.Empty); 然后我的输出是: str=”santhosh,ravi123,praveen,sathish,prakash”; 但我想要一个输出: str=”santhosh,ravi,phani123,praveen,sathish,prakash”;

如何在Windows商店(WinRT)应用程序中启用DocumentsLibraryfunction?

我刚刚在Visual Studio中创建了一个新的空白XAML / C#Windowsapp store应用。 我尝试使用以下代码在Documents文件夹中创建一个文件: // DEBUG ONLY: StorageFile file = await KnownFolders.DocumentsLibrary.CreateFileAsync(“Hey lol.txt”); 但它抛出了这个exception(我预期): WinRT信息:访问指定位置(DocumentsLibrary)需要在清单中声明一种function。 哪个好。 我期待它。 所以我去Package.appxmanifest并转到Capabilities选项卡,令我惊讶的是,没有列出“DocumentsLibrary”function。 如果它不存在,我如何启用它?

内循环中的ExecuteNonQuery

我正在尝试在C#中的循环中插入数据库记录。 它在我硬编码这样的值时起作用: string query3 = “INSERT INTO furniture (room_id,member_id) VALUES (222,333);”; SqlCommand cmd3 = new SqlCommand(query3, sqlConnection3); sqlConnection3.Open(); for (int i = 0; i < arrItemsPlanner.Length; i++) { try { cmd3.ExecuteNonQuery(); } catch { return "Error: Item could not be saved"; } finally { //Fail } } 但是,当我使用参数化查询时,它不起作用 – 即使我将值硬编码到参数化查询中,如下所示: string query3 = “INSERT INTO […]

做出延迟的mousedown事件

我有一个datagridview,哪些单元格有一个click事件。 单元格还具有以下mouseDown事件: if (e.Button == MouseButtons.Left && e.Clicks == 1) { string[] filesToDrag = { “c:/install.log” }; gridOperations.DoDragDrop(new DataObject(DataFormats.FileDrop, filesToDrag), DragDropEffects.Copy); } 每当我尝试单击一个单元格时,mousedown事件会立即触发并尝试拖动单元格。 如果用户将鼠标按下1秒钟,我怎样才能使mousedown事件触发? 谢谢!