【发布时间】:2017-03-03 07:35:02
【问题描述】:
您好,正在寻找比我更好的解决方案 - 我的 xml 文件 -
<?xml version="1.0" encoding="utf-16"?>
<ITEM>
<FIELD name="A" value="3" />
<FIELD name="B" value="testname" />
<FIELD name="C" value="test" />
<FIELD name="D" value="desctest%" />
<FIELD name="E" value="A@" />
<FIELD name="F" value="value^" />
<FIELD name="G" value="testvalue%" />
<FIELD name="H" value="^0" />
</ITEM>
这里是替换所有特殊字符的代码 -
string text = File.ReadAllText(@"C:\DilipLearn\xml_char\xml_char\test.txt");
char[] specialchar = { '~', '`', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', };
XDocument doc = XDocument.Parse(text);
var elements = doc.Elements().Descendants()
.Where(arg => arg.Attribute("value").Value.IndexOfAny(specialchar) >= 0)// == arg.Attribute("value").Value)
;
foreach (var element in elements)
{
element.SetAttributeValue("value", Regex.Replace(element.Attribute("value").Value, @"[@$%!@#^&*()]", match =>
{
switch (match.Value)
{
case "^": return "^";
case "@": return "@";
case "%": return "%";
case "$": return "$";
case "&": return "&";
default: return "";
}
})
);
}
string resultstring = string.Concat(doc.Declaration.ToString(), doc.ToString());
一切正常。
我只是想知道有没有更好的方法来做到这一点?例如没有循环或其他一些改进。
谢谢。
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为它属于 CodeReview,而不是 StackOverflow(您可以在那里获得工作代码的反馈,SO 是针对不工作的代码)。
-
@ManfredRadlwimmer 没有规定说 SO 适用于不工作的代码。相反,这个问题的问题在于there is no specific programming problem to be solved.
-
如果我提出更好的建议有什么问题?有 1000 种方法可以解决任何问题,我知道一种方法,寻求一些不同的意见来帮助我优化我的流程。
-
只要我发布与编程相关的问题应该没有任何问题。
-
如果您总体上寻求改进,那么这个问题对于 Stack Overflow 来说是题外话,因为没有具体的编程问题需要解决。但是,寻求改进代码的建议正是代码审查的目的。见A guide to Code Review for Stack Overflow users。