在字符串中只保留前20个条目
本文关键字:20个 保留 字符串 | 更新日期: 2023-09-27 18:01:30
我有一个包含计算的字符串。每个条目之间都有一个空格。如何只保留最近的20个条目?
Label2.text += TextBox1.Text + "+" + TextBox2.Text + "=" + Label1.Text + " ";
输出是:
20+20=40 40+20=60 60+20=80
string.Split(' ').Reverse().Take(20)
或者,如David &Groo已经在其他评论中指出
string.Split(' ').Reverse().Take(20).Reverse()
您可能想要维护一个项目队列(先进先出结构):
// have a field which will contain calculations
Queue<string> calculations = new Queue<string>();
void OnNewEntryAdded(string entry)
{
// add the entry to the end of the queue...
calculations.Enqueue(entry);
// ... then trim the beginning of the queue ...
while (calculations.Count > 20)
calculations.Dequeue();
// ... and then build the final string
Label2.text = string.Join(" ", calculations);
}
请注意,while
循环可能只运行一次,并且可以很容易地替换为if
(但这只是一个故障保险,以防队列从多个地方更新)。
另外,我想知道Label
是否真的是保持项目列表的正确控件?
使用字符串分割
string.Split(' ').Take(20)
如果最近的是在最后,那么你可以使用OrderByDescending
然后Take20
string.Split(' ').Select((n, i) => new { Value = n, Index = i }).OrderByDescending(i => i.Index).Take(20);
string[] calculations = yourString.Split(' ');
string[] last20 = calculations.Skip(Math.Max(0, calculations.Count() - 20).Take(20);