gpt4 book ai didi

c# - 根据字数过滤字符串

转载 作者:太空狗 更新时间:2023-10-29 22:16:32 25 4
gpt4 key购买 nike

我正在尝试根据每个字符串中的单词数过滤字符串列表。我假设您将修剪字符串末尾的任何空白,然后计算字符串中剩余的空格数,以便 WordCount = NumberOfSpaces + 1。这是执行此操作的最有效方法吗?我知道对于基于字符数的过滤,以下工作正常......只是想不出如何使用 C#/LINQ 简洁地编写它。

if (checkBox_MinMaxChars.Checked)
{
int minChar = int.Parse(numeric_MinChars.Text);
int maxChar = int.Parse(numeric_MaxChars.Text);

myList = myList.Where(x =>
x.Length >= minChar &&
x.Length <= maxChar).ToList();
}

有什么计算单词的想法吗?

更新:这就像一个魅力......谢谢马修:

int minWords = int.Parse(numeric_MinWords.Text);
int maxWords = int.Parse(numeric_MaxWords.Text);

sortBox1 = sortBox1.Where(x => x.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count() >= minWords &&
x.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count() <= maxWords).ToList();

最佳答案

我会以更简化的方式处理它,因为您已经指出可以像这样可靠地使用空格作为分隔符:

var str = "     the string to split and count        ";
var wordCount = str.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count();

编辑:

如果需要最佳性能并且内存使用是一个问题,您可以编写自己的方法并利用 IndexOf()(尽管有很多方法可以解决这样的问题,但我更喜欢重用而不是从头开始代码设计):

    public int WordCount(string s) {
const int DONE = -1;
var wordCount = 0;
var index = 0;
var str = s.Trim();
while (index != DONE) {
wordCount++;
index = str.IndexOf(" ", index + 1);
}
return wordCount;
}

关于c# - 根据字数过滤字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com