我有一个格式如下的XML文件:
<Snippets>
<Snippet name="abc">
<SnippetCode>
testcode1
</SnippetCode>
</Snippet>
<Snippet name="xyz">
<SnippetCode>
testcode2
</SnippetCode>
</Snippet>
...
</Snippets>
Run Code Online (Sandbox Code Playgroud)
我可以使用XDocument成功加载元素,但是我在添加新元素时遇到了麻烦(有许多函数,我尝试过的大多数函数对我来说效果不好).怎么做?新元素将包含代码段名称标记和代码段代码标记.我以前的方法是打开文件,并使用字符串手动创建元素虽然有效,但这是一个非常糟糕的主意.
我尝试过的:
XDocument doc = XDocument.Load(spath);
XElement root = new XElement("Snippet");
root.Add(new XElement("name", "name goes here"));
root.Add(new XElement("SnippetCode", "SnippetCode"));
doc.Element("Snippets").Add(root);
doc.Save(spath);
Run Code Online (Sandbox Code Playgroud)
结果如下:
<Snippet>
<name>name goes here</name>
<SnippetCode>
code goes here
</SnippetCode>
</Snippet>
Run Code Online (Sandbox Code Playgroud)
它工作正常,但名称标签生成不正确.它应该是
<Snippet name="abc">
Run Code Online (Sandbox Code Playgroud)
但我无法正确生成.
这应该是一个非常简单的正则表达式问题,但我无法在任何地方找到任何答案.如何制作一个正则表达式,它只匹配2个字符或至少4个字符.这是我目前的做法(忽略正则表达式本身,除此之外):
[A-Za-z0_9_]{2}|[A-Za-z0_9_]{4,}
Run Code Online (Sandbox Code Playgroud)
但是,这种方法花费了两倍的时间(对于400行文件,我的速度大约慢了0.3秒),所以我想知道是否有更好的方法来做到这一点?
我使用WebClient从网站下载一个字符串(只包含纯文本,没有别的),所以我使用DownloadString方法:
WebClient wc = new WebClient();
string str = wc.DownloadString("http://blah");
Run Code Online (Sandbox Code Playgroud)
它运行正常,但问题是它第一次下载字符串需要很长时间,比如5秒.之后它运作得很快.为什么会发生这种情况,如何解决这个问题呢?
检查字符串是否包含C#中字符串数组中的任何匹配项的最快方法是什么?我可以使用循环来完成它,但我认为这太慢了.
在我的MatchCollection中,我获得相同的匹配.像这样:
string text = @"match match match";
Regex R = new Regex("match");
MatchCollection M = R.Matches(text);
Run Code Online (Sandbox Code Playgroud)
如何删除重复的匹配,是否是最快的方式?
假设此处的"重复"表示匹配包含完全相同的字符串.
由于我不满意我的C#应用程序不能在Linux或Mac上工作,我安装了MonoDevelop,希望将我的应用程序移植到Mono以实现交叉平台化.
但是,我不知道如何使用MonoDevelop来完成这项任务.常见问题解答或文档中没有说明.
知道怎么做吗?
在XML文件中,例如:
<Snippets>
<Snippet name="abc">
<SnippetCode>
code goes here
</SnippetCode>
</Snippet>
<Snippet name="def">
<SnippetCode>
code goes here
</SnippetCode>
</Snippet>
</Snippets>
Run Code Online (Sandbox Code Playgroud)
当只给出属性名称(如abc或def)时,如何删除元素?
假设我有一个带有文本的字符串:"这是一个测试".我怎么会每n个字符拆分一次?所以如果n是10,那么它会显示:
"THIS IS A "
"TEST"
Run Code Online (Sandbox Code Playgroud)
你明白了.原因是因为我想将一条非常大的线分成更小的线,有点像自动换行.我想我可以使用string.Split(),但我不知道如何和我感到困惑.
任何帮助,将不胜感激.
我有一个托管 dll 文件,它将函数从 C++ dll 导入到托管环境。我在程序中使用了它的一些功能,但问题是,当我使用它时出现此错误:
无法加载 DLL“Libraries\lib.dll”:找不到指定的模块。(HRESULT 异常:0x8007007E)
我将 .dll 文件放置在程序目录和 system32 文件夹中。然而,它仍然不起作用。我想我必须使用 DLLImport 但我不知道如何使用它..即使在看了一些例子之后我仍然很困惑。有人可以帮我吗?
我的.resx文件出现了一个奇怪的错误:
"无效的Resx文件.ResX输入无效.无法找到ResX读取器和写入器类型名称的有效"resheader"标签.C:\ Documents and Settings\Users\My Documents\Visual Studio 2010\Projects\dock\WinForms\Dock\strings.resx"
我所做的是将现有VS 2010解决方案中的一些文件替换为VS 2008解决方案中的一些旧文件,大多数文件工作正常,但我收到此错误,我不知道如何修复它.如果它有所不同,这是该文件的源代码.
我正在使用.NET WinForms 4.0,如果这很重要的话.