如何找到以大写开头的最大单词,并添加分隔符和空格
本文关键字:添加 分隔符 空格 单词 何找 开头 | 更新日期: 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
}