很少有可能的搜索值
如果只有几种可能的组合,您可以简单地进行多次测试:
string value = "01HW128120";
string replacement = "MachineID-";
if( value.Contains( "01HW" ) ) {
value = value.Replace( "01HW", replacement );
}
else if( value.Contains( "1001HW" ) ) {
value = value.Replace( "1001HW", replacement );
}
Assert.AreEqual( "MachineID-128120", value );
许多可能的搜索值
当然,如果您有大量的可能性,这种方法很快就会变得笨拙。另一种方法是将所有搜索字符串保存在一个列表中。
string value = "01HW128120";
string replacement = "MachineID-";
var tokens = new List<string> {
"01HW",
"1001HW"
// n number of potential search strings here
};
foreach( string token in tokens ) {
if( value.Contains( token ) ) {
value = value.Replace( token, replacement );
break;
}
}
“更智能”的匹配
如果您有可管理数量的搜索字符串,但您可能需要不完全匹配、不区分大小写、环顾四周或捕获值以插入被替换的字符串,则正则表达式非常适合字符串替换。
一个非常简单的正则表达式,满足您的要求:1001HW|01HW
.
演示:http ://regexr.com?34djm
一个稍微聪明的正则表达式:^\d{2,4}HW
- 在字符串开头断言位置
- 匹配 2-4 位数字
- 从字面上匹配值“HW”
另请参阅:Regex.Replace 方法