c# - 如何从字符串中获取最后 2 个单词(从倒数第二个空格开始)?

标签 c# linq

我的主要字符串是,

“自 1500 年代以来,Lorem Ipsum 一直是行业标准的虚拟文本 20 TN 123 34”

我只想从主字符串中获取“123 34”。 我已经通过以下代码完成了。

  string mainStr = " Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 20 TN 123 34";
                string filterStr = mainStr.Substring(0, mainStr.LastIndexOf(" "));
                int sRange = filterStr.LastIndexOf(" ");
                string outputStr = mainStr.Substring(sRange+1);

如何通过Linq方式完成(单行就很棒)?

最佳答案

使用 linq 获取最后两个元素可能有点不可读,因此我建议使用不包含 LastIndexOfSubstring 的多行解决方案:

string mainStr = " Lorem Ipsum has been the industry's standard dummy text ever since the 1500s 20 TN 123 34";
var words = mainStr.Split();
var lastTwoWords = string.Join(" ", words.Skip(words.Length - 2));

如果你真的需要它是 linq,你可以使用 ReverseTake 的组合:

var lastTwoWords = string.Join(" ", mainStr.Split().Reverse().Take(2).Reverse());

关于c# - 如何从字符串中获取最后 2 个单词(从倒数第二个空格开始)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54586181/

相关文章:

c# - Char 到 int 隐式转换幕后

c# - 通过反射调用带有可选参数的方法

.net - 如何在 linq to sql 中进行连接?

c# - 使用 LINQ 展平嵌套字典

c# - 界限在哪里 - 是否有可能过于热爱 LINQ?

linq - Where 和 Single 的区别

c# - 为什么在构造函数中使用属性时会出现堆栈溢出?

c# - 如何从列表框 C# 中删除选定的项目

c# - 让页面读取从另一个页面发布到它的值的最佳方法是什么?

.net - 使用 LINQ 比较和检查集合