【问题标题】:Formatted Sub string格式化的子字符串
【发布时间】:2017-12-06 15:45:24
【问题描述】:

我正在使用 C# 并且有一个带有文档名称的字符串:

string docName = "email notification 4926-0538-5751 v.11.docx"

这是它最初的格式:

"Doc_Name Doc_Number v.version_Number.doc_extension"

试图找到我应该如何从这个字符串中获取子字符串,如下所示:

string formateddocNumber = "4826-0718-5751 v.11"

我觉得我必须使用某种正则表达式。但不确定。

如果有帮助,doc_number 始终是这种格式:

1234-1234-1234

并且总是有这种格式的版本:

v.some_number

我不能使用 docx 来匹配正则表达式,因为扩展名可能是 doc 或 txt 之类的。

【问题讨论】:

  • 你不能只查找三个用连字符隔开的四位数字,然后是空格和 v.digits 吗?
  • 你可以用docName.Split(' ')将字符串分割成空格
  • 不使用正则表达式,您可以搜索最后出现的“v”。然后返回 17 个地方并从那里拿走它
  • 任何解决方案都对我有用。但我只是不知道该怎么做。戴夫 C# 中的正确代码应该是什么?或 Kin 版本号可以是一位数或两位数。那么提取文档号和版本号的子字符串设置是什么?

标签: c# substring


【解决方案1】:

正则表达式非常简单:

string docName = "email notification 4926-0538-5751 v.11.docx";
var regex = new Regex(@"^.+ (\d{4}-\d{4}-\d{4} .+?)\.[^.]+$");
var match = regex.Match(docName);
if (match.Success)
{
    Console.WriteLine(match.Groups[1].Value);
}

【讨论】:

  • 感谢您的回复。我认为它更接近。但我得到了这个:“通知 4826-0718-5751 v.2”。如何删除整个文档名称?文档名称也可以是任何数字。比如“2017 年电子邮件通知设置 4926-0538-5751 v.11.docx”
  • 从问题中并不清楚您到底需要什么部分。检查我的答案的更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
相关资源
最近更新 更多