将一个字符串拆分为前导数字和其后的所有数字
本文关键字:数字 一个 拆分 字符串 | 更新日期: 2023-09-27 18:28:24
我有一个必须复制到新目录的文件列表。所有信息都在文件名中。每个原始文件名都包含一个[安装号][新文件名]。例如:
235623bob.txt
这里的安装号是235623,新文件名将是bob.txt。安装号是1到11位数字,新文件名将从不以数字开头。但是,它可以以任何其他合法字符开头,并且可以在第一个字符之后包含数字。例如:
3245_6786bil54.txt
是3245作为安装编号,_6786bil54.txt作为新文件名。我试过做以下事情:
private void BtnGo_Click(object sender, EventArgs e)
{
string inst_no = ""; // installation number
string dest_filename = ""; // destination filename
string dest_directory = "";
string[] source_files = Directory.GetFiles(TxtSource.Text);
// copy them to their new destination
foreach (string file in source_files)
{
// source filename contains the instno and dest_filename.
Match match = Regex.Match(file, @"('d+)('w+)");
inst_no = match.Groups[0].Value;
dest_filename = match.Groups[1].Value;
dest_directory = TxtDestination.Text + "''" + inst_no;
if (!Directory.Exists(dest_directory))
Directory.CreateDirectory(dest_directory);
File.Copy(file, dest_directory + "''" + dest_filename);
}
}
问题是:
inst_no = match.Groups[0].Value;
dest_filename = match.Groups[1].Value;
1253hans.txt应成为
inst_no=1253
dest_filename=hans
但它是
inst_no=1253hans
filename=1253
我对小组赛有什么误解?
Groups[0]
始终是完全匹配的字符串。Groups[1]
将是您的第一个子组
你的代码应该是这样的:
inst_no = match.Groups[1].Value;
dest_filename = match.Groups[2].Value;