在第一个下划线之后提取子字符串

Posted

技术标签:

【中文标题】在第一个下划线之后提取子字符串【英文标题】:extract substring after the first underscore 【发布时间】:2014-03-23 01:32:14 【问题描述】:

我需要删除文件名中的下划线及其前面的所有字符。文件名的语法如下:

<username>_<NameofFile>_<InstructorName>_<ClassName>.xls  

我想保留所有内容,但 &lt;username&gt;_ 部分除外。 我尝试使用.Split 如下:

string newfilename = file.Split('_')[1];

但这放弃了一切,只保留了&lt;NameOfFile&gt;。 这是如何实现的?

【问题讨论】:

你的用户名可以有下划线吗? 【参考方案1】:
string newfilename = file.Substring(file.IndexOf('_') + 1);

【讨论】:

我认为这是你最好的选择。你也可以用String.Remove(0, i + 1) 来做,但这会比String.Substring() 慢。【参考方案2】:

Split 方法有an overload,允许您指定要拆分的最大子字符串数。

string newfilename = file.Split(new []  '_' , 2).Last();

另外,我建议使用Last(),而不是[1],以便在没有任何下划线时获得完整的字符串。

【讨论】:

以上是关于在第一个下划线之后提取子字符串的主要内容,如果未能解决你的问题,请参考以下文章

PB中取字符串子串的函数是啥

PB中取字符串子串的函数是啥

如何更改python字符串子字符串信息

在R中提取子字符串最多为双下划线

字符串子串去重之后的个数

在 Bash 中提取子字符串