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

本文关键字:添加 分隔符 空格 单词 何找 开头 | 更新日期: 2023-09-27 18:24:04

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

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并添加,并空格

结果应为"Lietuvos",

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

我会使用LINQ:

var ilgiaus = parts.Where(s => s[0].IsUpper())
                   .OrderByDescending(s => s.Length)
                   .FirstOrDefault();
if(ilgiaus != null) {
   return ilgiaus + ", ";
}

您还可以使用regex和linq。你不需要被许多字符分割。

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,可以使用OrderByDescending(x => x.Length).First() 来代替MaxBy(val => val.Length)

可能有更巧妙、更优雅的方法,但以下伪代码应该有效:

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
}