把一切都放在最后的“。”字符串形式

时间:2018-10-14 17:53:24

标签: c# regex

我有一个包含多个“。”的字符串。在里面。我正在尝试捕获到最后一个“ << / LEFT> ”中的所有内容。我尝试了这种语法(因为我总是要捕获6个字符)

var result = filename.Substring(filename.LastIndexOf('.') - 6);

但是这将返回我想要的6个字符以及扩展名。文件名看起来像一个例子

The.Red.The.Blue.The.Green.Notification.Paper.R23B22.docx

代码段中的代码返回R23B22.docx,我只想返回R23B22

如何更改此代码以返回所需的结果?

5 个答案:

答案 0 :(得分:1)

只需使用String.Split()

var splits = filename.Split('.');
var result = splits.Length > 1 ? splits[splits.Length - 2] : "";

答案 1 :(得分:1)

您可以使用

/([^.]+)\.[^.]+$/

Demo

答案 2 :(得分:1)

您忘记指定想要的字符数:

var result = filename.Substring(filename.LastIndexOf('.') - 6, 6);

演示:https://dotnetfiddle.net/a2JF5z

答案 3 :(得分:0)

尝试一下:

var filename = "The.Red.The.Blue.The.Green.Notification.Paper.R23B22.docx";
var result = filename.Substring(filename.LastIndexOf('.')-6);

int index = result.IndexOf(".",StringComparison.InvariantCulture);
if (index > 0)
{
   result = result.Substring(0, index); // result = R23B22
}

答案 4 :(得分:0)

另一个:

取出最后一块,然后除以.,取出最后一块。

string output = filename.Substring(0, input.LastIndexOf(".")).Split('.').LastOrDefault();

string output = Path.GetFileNameWithoutExtension(filename).Split('.').LastOrDefault();