【问题标题】:Display the 2nd longest word(s) in the text with comma separator(s) in C#在 C# 中用逗号分隔符显示文本中第二长的单词
【发布时间】:2014-11-09 09:54:06
【问题描述】:

我想知道如何用逗号分隔符显示文本中第二长的单词(列表)?

以下是查找第二长单词的代码(不重复)

结果应该在标签中显示第二长的单词 apples, lemons(带逗号分隔符)的列表,但它目前只显示单个结果 Lemons。如何用逗号分隔符显示它?

我是编程新手,所以更简单的编码会很棒

先谢谢大家了~

string st = "I like apples. I like red apples. I like red apples, lemons and green bananas.";

            char[] sep = new char[] { '.', ',', ' ' };

            string secondLongestWord = (from words in st.Split(sep).Distinct().ToArray()
                                        orderby words.Length descending
                                        select words).Take(2).Last().ToString();


            var query = from words in st.Split(sep).Distinct().ToArray()
            where words.Length == secondLongestWord.Length
            select words;

            foreach (string word in query)
            {
                this.lbl2ndLongest.Text = word;             

            }

【问题讨论】:

  • 如果您想要LengthsecondLongestWord.Length 相同的单词,那么您应该在where 子句中输入 - 现在您正在尝试将整数与字符串进行比较,这是编译器告诉你的。
  • 哦,我是多么愚蠢!其中 words.Length == secondLongestWord.Length 感谢 Preston!

标签: c# word-count


【解决方案1】:

不是您的错误的答案(如 cmets 中所指出的),但我想建议您可以按长度对单词进行分组并直接选择第二长的单词:

var secondLongestWords = (from word in st.Split(sep).Distinct()
                          group word by word.Length into g
                          select g).OrderByDescending(g => g.Key).ElementAtOrDefault(1);

将其转换为逗号分隔列表:

string list = null;
if (secondLongestWords != null)
{
    list = string.Join(", ", secondLongestWords);
}

【讨论】:

  • 嗨漂流,谢谢,但是如何在单词之间使用逗号分隔符显示多个结果?谢谢!
  • 谢谢!效果很好!但我不知道使用 ElementAtOrDefault(1)..... 所以我将旧编码替换为您的新编码,但该组合返回一个值。我还能在你的字符串列表块中使用我的旧编码吗?谢谢:)
  • ElementAtOrDefault(1) 返回枚举中的第二个元素,如果没有第二个元素,则返回null。如果你想在只有 1 个元素的情况下取第一个元素,那么是的,你可以使用你所拥有的 .Take(2).Last()
  • 哦,我明白了!非常感谢漂流! :)
【解决方案2】:

String 类有许多有用的操作,包括Length 属性,它返回给定字符串对象中的字符总数。 MSDN 有一个完整的列表。

【讨论】:

  • OP 已经表明他们知道 .Length 属性。您没有显示任何代码来演示它对回答问题有何用处。如果您想知道的话,这两者可能都是您投反对票的原因(还不是来自我)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多