首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找以大写开头并添加分隔符和空格的最大单词

问如何查找以大写开头并添加分隔符和空格的最大单词
EN

Stack Overflow用户
提问于 2015-11-24 05:26:44
回答 3查看 96关注 0票数 0

我的代码可以找到以大写字母开头的最大的单词。但我需要这个词来加一个分隔符和空格。你知道我该怎么做吗?

代码语言:javascript
复制
char[] skyrikliai = { ' ', '.', ',', '!', '?', ':', ';', '(', ')', '\t' };
string eilute = "Arvydas (g. 1964 m. gruodzio 19 d. Kaune)– Lietuvos, krepsininkas, olimpinis ir pasaulio cempionas, nuo 2011 m. spalio 24 d.";

static string Ilgiausias(string eilute, char[] skyrikliai)
{
        string[] parts = eilute.Split(skyrikliai,
        StringSplitOptions.RemoveEmptyEntries);
        string ilgiaus = "";

        foreach (string zodis in parts)
            if ((zodis.Length > ilgiaus.Length) && (zodis[0].ToString() == zodis[0].ToString().ToUpper()))
                ilgiaus = zodis;
        return ilgiaus;
    }

它应该找到单词Lietuvos和add,以及空格

结果应该是"Lietuvos“

EN

回答 3

Stack Overflow用户

发布于 2015-11-24 05:38:45

为此,我将使用LINQ:

代码语言:javascript
复制
var ilgiaus = parts.Where(s => s[0].IsUpper())
                   .OrderByDescending(s => s.Length)
                   .FirstOrDefault();

if(ilgiaus != null) {
   return ilgiaus + ", ";
}
票数 3
EN

Stack Overflow用户

发布于 2015-11-24 05:44:39

您还可以使用regex和linq。你不需要拆分很多字符。

代码语言:javascript
复制
Regex regex = new Regex(@"[A-Z]\w*");
string str = "Arvydas (g. 1964 m. gruodzio 19 d. Kaune)– Lietuvos, krepsininkas, olimpinis ir pasaulio cempionas, nuo 2011 m. spalio 24 d.";

string longest = regex.Matches(str).Cast<Match>().Select(match => match.Value).MaxBy(val => val.Length);

如果你不想使用MoreLinq而不是MaxBy(val => val.Length),你可以使用OrderByDescending(x => x.Length).First()

票数 1
EN

Stack Overflow用户

发布于 2015-11-24 05:43:05

可能还有更巧妙和优雅的方法,但以下伪代码应该可以工作:

代码语言:javascript
复制
List<String> listOfStrings = new List<String>();
// add some strings to the generic list
listOfStrings.Add("bla");
listOfStrings.Add("foo");
listOfStrings.Add("bar");
listOfStrings.Add("Rompecabeza");
listOfStrings.Add("Rumpelstiltskin");
. . .
String longestWorld = String.Empty;
. . .
longestWord = GetLongestCapitalizedWord(listOfStrings);
. . .

private String GetLongestCapitalizedWord(List<String> listOfStrings)
{
    foreach (string s in listofstrings)
    {
      if ((IsCapitalized(s) && (s.Len > longestWord.Len)))
      {
          longestWord = s;
      } 
    }
}

private bool IsCapitalized(String s)
{
    return // true or false
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33881019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档