我需要创建一个方法,该方法采用string[]
并且仅返回5个字母或更短的单词。
我对编程很陌生,请帮忙。
答案 0 :(得分:0)
由于您要确保该单词仅包含5个字母或更少,这意味着您要从该单词的长度中排除标点符号,因此可以在检查该单词是否正则表达式时将其从正则表达式中去除掉该单词的剩余长度不超过5个。
该方法中的Regex对象将从单词中去除所有非字母,然后检查剩余字符的长度,但是将原始单词添加回结果列表中以供显示。
您可以尝试以下操作:
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string[] words = new string[] {
"I", "need", "to", "create", "a", "method", "which", "takes", "string[]",
"and", "only", "returns", "words", "that", "are", "5", "letters", "or", "shorter",
"aren't"
};
Console.WriteLine(string.Join(", ", Get5LetterWords(words)));
}
public static string[] Get5LetterWords(string[] words)
{
Regex rgx = new Regex("[^a-zA-Z]");
List<string> _5LetterWords = new List<string>();
for (int i = 0; i < words.Length; i++)
{
string word = rgx.Replace(words[i], "");
if (!string.IsNullOrEmpty(word) && word.Length <=5 )
{
_5LetterWords.Add(words[i]);
}
}
return _5LetterWords.ToArray();
}
}
结果:
I, need, to, a, which, takes, and, only, words, that, are, or, aren't
答案 1 :(得分:0)
基于有关字母的注释,并使用Unicode类别定义字母:
itemName
答案 2 :(得分:-1)
使用LINQ和Where函数过滤出结果:
var shortWordsList = originalArray.ToList().Where(e => e.Length <= 5);
只需复制一下,无论如何我已经标记了您的问题:)