C# 如何用新的guid替换子字符串000-000
我需要用新的guid替换所有“0000-000”字符串。因此字符串中的每个“0000-000”都应该有一个新的GUID。到目前为止,我已经能够用一个新的GUID替换所有的GUID。下面是一个非常基本的代码:C# 如何用新的guid替换子字符串000-000,c#,regex,xml,C#,Regex,Xml,我需要用新的guid替换所有“0000-000”字符串。因此字符串中的每个“0000-000”都应该有一个新的GUID。到目前为止,我已经能够用一个新的GUID替换所有的GUID。下面是一个非常基本的代码: private string ReplaceGuids(string xmlContent) { string fakeGuid = "00000000-0000-0000-0000-000000000000"; xmlContent = @"<!--<workf
private string ReplaceGuids(string xmlContent)
{
string fakeGuid = "00000000-0000-0000-0000-000000000000";
xmlContent = @"<!--<workflow id=""00000000-0000-0000-0000-000000000000"">--><!--<workflow id=""00000000-0000-0000-0000-000000000000"">-->";
//Method 1: replaces all 000000-00000 with the same new GUID
xmlContent = xmlContent.Replace(fakeGuid, Guid.NewGuid().ToString().ToUpper());
//Method 2: also replacs all 0000-00000 with the same GUID
int pos = -1;
do
{
pos = xmlContent.IndexOf(fakeGuid);
if (pos > 0)
{
xmlContent = xmlContent.Replace(fakeGuid, Guid.NewGuid().ToString().ToUpper());
}
} while (pos > 0);
return xmlContent;
}
私有字符串替换GUID(字符串xmlContent)
{
字符串fakeGuid=“00000000-0000-0000-0000-000000000000”;
xmlContent=@;
//方法1:用相同的新GUID替换所有000000-00000
xmlContent=xmlContent.Replace(fakeGuid,Guid.NewGuid().ToString().ToUpper());
//方法2:还使用相同的GUID重播所有0000-00000
int pos=-1;
做
{
pos=xmlContent.IndexOf(fakeGuid);
如果(位置>0)
{
xmlContent=xmlContent.Replace(fakeGuid,Guid.NewGuid().ToString().ToUpper());
}
}而(pos>0);
返回XML内容;
}
我以前使用过RegEx,但不知道如何使每个000-000得到不同的新guid。谢谢大家! 您可以使用
Regex.Replace
方法替换带有匹配计算器的重载,以便为每个匹配创建新的替换字符串
在替换特定字符串时,请使用Regex.Escape
方法对其中具有特殊模式含义的任何字符进行转义
xmlContent = Regex.Replace(
xmlContent,
Regex.Escape(fakeGuid),
m => Guid.NewGuid().ToString().ToUpper()
);
如果您没有使用Replace
将GUID放入字符串中,而是使用Substring
获取要替换的部分前后的部分,则第二种方法也会起作用:
int pos = -1;
do {
pos = xmlContent.IndexOf(fakeGuid);
if (pos > 0) {
xmlContent =
xmlContent.Substring(0, pos) +
Guid.NewGuid().ToString().ToUpper() +
xmlContent.Substring(pos + fakeGuid.Length);
}
} while (pos > 0);
您可以使用带有匹配计算器的重载的
Regex.Replace
方法,以便为每个匹配创建新的替换字符串
在替换特定字符串时,请使用Regex.Escape
方法对其中具有特殊模式含义的任何字符进行转义
xmlContent = Regex.Replace(
xmlContent,
Regex.Escape(fakeGuid),
m => Guid.NewGuid().ToString().ToUpper()
);
如果您没有使用Replace
将GUID放入字符串中,而是使用Substring
获取要替换的部分前后的部分,则第二种方法也会起作用:
int pos = -1;
do {
pos = xmlContent.IndexOf(fakeGuid);
if (pos > 0) {
xmlContent =
xmlContent.Substring(0, pos) +
Guid.NewGuid().ToString().ToUpper() +
xmlContent.Substring(pos + fakeGuid.Length);
}
} while (pos > 0);
使用以下命令:
^0{8}-0{4}-0{4}-0{4}-0{12}$
或(仅适用于“0”和“-”):
带标志多行
使用以下方法:
^0{8}-0{4}-0{4}-0{4}-0{12}$
或(仅适用于“0”和“-”):
带标志多行