c# - 如何获得定号之间的字符串中间部分?

标签 c# .net string

我有这样的字符串:
    “ d:\ tmp \ abc_list.csv”
    “ d:\ tmp \ xyzx_list.csv”
    “ d:\ tmp \ qwert_list.csv”
我需要使用文件名的第一部分:abx,xyzc,qwert。我现在这样做是:

 string name = filename.Substring(filename.LastIndexOf('\\') + 1 , filename.IndexOf('_') - filename.LastIndexOf('\\') - 1);


我觉得应该有更简便,更好的方法。它是什么?

最佳答案

您的解决方案很好,但是如果文件名的另一部分(例如,其目录路径的一部分)带有下划线,则它将中断。您应该对其稍作更改以避免出现此问题:

int pos = filename.LastIndexOf('\\') + 1;
string name = filename.Substring(pos , filename.IndexOf('_', pos) - pos);


如果您的解决方案美观,健壮且易于理解,则没有理由选择更短的解决方案。当然,您可以使用正则表达式,但是生成的单行解决方案的可读性要差得多:

var res = Regex.Matches(s, @"(?<=\\)[^_\\]*(?=_[^\\]*$)")[0].Value;


这是demo of this solution on ideone

关于c# - 如何获得定号之间的字符串中间部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18532003/

相关文章:

javascript - 将 JavaScript 日期转换为 .NET 日期时间

c# - 如何给我的 Windows 窗体应用程序换肤?

android - 在android中使用wifi direct在两个wifi direct连接的用户之间传递字符串?

c# - C#NAudio 3D声音

c# - asp.net 用户控件,获取 htmlAnchor 解析为 href ="#"

c# - 将 PGP 公钥转换为 RSA 公钥 XML 格式

python - 使用 2 个参数制作字符串列表。 Python 3.3

c# - 我可以创建仅在模板内可用的用户控件吗?

c# - JSON.NET 反序列化存储为属性的 JSON 对象

swift - 使用通用正则表达式将字符串拆分为数组