【发布时间】:2016-04-15 22:55:44
【问题描述】:
鉴于我从 XML 文件中读取的以下值:
00B50578 00A41434 00B50578
并且,给定以下字符串:
string foo = "6F6F6F6F6F";
我想以某种方式将我从 XML 文件中读取的字符替换为“foo”中的字符。但是,我想开始替换“00”之后的那些字符,并且只继续以等于“foo”长度的方式替换这些字符。因此,如果我按照自己的方式进行,新值将如下所示:
006F6F6F 006F6F34 00B50578
我尝试了几种方法来解决这个问题,但都无济于事。
假设我将 XML 值读入一个名为“arrXmlValues”的数组中,我编写的代码如下所示……
string foo = "6F6F6F6F6F";
string[] arrXmlValues = new String[] { xmlReader.GetAttribute("w:val") };
foreach (string r in arrXmlValues)
{
Console.WriteLine("Original value was : {0}", r);
StringBuilder sb = new StringBuilder(r);
sb.Remove(2, foo.Length);
sb.Insert(2, foo);
Console.WriteLine("New value is : {0}", sb);
Console.WriteLine("");
}
这里需要注意的是,8 位十六进制值块必须保持原样。因此,我一次只能替换每个块中的 6 个字符,并且任何未写入列表中第一个块的内容都必须写入列表中的第二个块 ,但前提是我要根据变量“foo”...
当然,愿意接受完成此任务的新方法以及您可能提供的任何想法。我不是一个强大的程序员,但我的目标是为学校项目解决这个问题并学习。
感谢任何帮助和指导。实现这个目标的示例代码会很棒。谢谢!!!
【问题讨论】:
-
使用正则表达式,捕获 00 之后的值并将其替换为字符串。
标签: c# arrays string hex stringbuilder