替换c#字符串中的字符
本文关键字:字符 字符串 替换 | 更新日期: 2023-09-27 18:07:59
我需要替换c#中文件名中的一系列字符。在做了很多搜索之后,我找不到一个替换两个特定字符之间所有字符的好例子。例如,文件名应该是:
"TestExample_serialNumber_Version_1.0_.pdf"所有我想要的是最终产品是"serialNumber"。
是否有一个特殊字符可以用来替换第一个下划线以内的所有字符?然后我可以运行替换方法再次替换和包括下一个下划线之后的一切?我听说过使用正则表达式,但我在Java中做过类似的事情,看起来更容易完成。我一定不理解c#中的字符串格式。
我会想象它看起来像:
name.Replace("T?_", "");//where ? equals any characters between
name.Replace("_?", "");
而不是"替换",只需使用正则表达式提取您想要的部分。比如:
(?:TestExample_)(.*)(?:_Version)
将给出捕获组中的serialnumber
部分。
或者如果TestExample
是可变的(在这种情况下,您需要您的问题更加具体说明您正在匹配的模式),您可能只需要做:
(?:_)(.*)(?:_Version)
假设Version
部分为常数。
在C#
中,您可以这样做:
var regex1 = new Regex("(?:TestExample_)(.*)(?:_Version)");
string testString = "TestExample_serialNumber_Version_1.0_.pdf";
string serialNum = regex1.Match(testString).Groups[1].Value;
作为regex的替代方法,您可以找到下划线的第一个实例,然后找到下划线的下一个实例,并取这些索引之间的子字符串。
string myStr = "TestExample_serialNumber_Version_1.0_.pdf";
string splitStr = "_";
int startIndex = myStr.IndexOf(splitStr) + 1;
string serialNum = myStr.Substring(startIndex, myStr.IndexOf(splitStr, startIndex) - startIndex);