我需要解析文件名的两部分
我需要的例子是" PartOne"和" PartTwo"
所以给定的文件总是以我想要的东西开始直到一个下划线字符,然后其他部分总是以.txt结尾
PartOne_PartTwo.txt
期望的结果将是
string a = "PartOne"
string b = "PartTwo"
我试图理解像这样的一些正则表达式:/ :(不确定我喜欢正则表达式...
^"(.*?)"\s+(\d[\d.]*)$
真实的例子
waterview_111254059820170506.txt
因此(我需要解析的)结果将是
string a = "waterview"
string b = "111254059820170506"
子串或正则表达式?
答案 0 :(得分:1)
使用System.IO.Path
class和String.Split
:
string[] parts = Path.GetFileNameWithoutExtension(filePath).Split('_');
string a = parts[0].Trim();
string b = parts[1].Trim(); // possible exception if there was no underscore, check parts.Length > 1
答案 1 :(得分:0)
您可以使用String.Split(https://msdn.microsoft.com/es-es/library/tabh47cf(v=vs.110).aspx)
string s = "xxx_ssss";
var tokens = s.Split('_');
注意简单的引号(''),因为它是一个字符分隔符,而不是字符串。 标记的值是一个数组
tokens[0] = "xxx"
tokens[1] = "ssss"
答案 2 :(得分:0)
获取没有扩展名的文件名的最佳方法是
您可以从此系统对象中获取没有扩展名的文件名
string inputFile = @"c:\folder\partone_parttwo.ext";
string filename= System.IO.File.Path.GetFileNameWithoutExtension(inputFile);
这是一个强大而快速的算法,它可以从完整路径或仅从简单文件名中提取文件名
拆分文件名部分而不使用正则表达式 然后你可以拆分字符串
char delimiter = '_';
string[] filenameParts = filename.Split(delimiter);
使用正则表达式分割文件名部分:
string pattern = "_";
string[] filenameParts = Regex.Split(filename, pattern);