【问题标题】:comparing number of characters of each string in an array比较数组中每个字符串的字符数
【发布时间】:2022-07-05 23:29:13
【问题描述】:

我有一个字符串数组。如何比较每个字符串的字符长度并查看数组中的每个字符串是否具有相同的字符长度...尽管数组中的字符串数量很多。

这是我所拥有的:

my code so far

【问题讨论】:

标签: c#


【解决方案1】:
Words.All(s=>s.Length==Words.Length)

使用检查所有字符串是否与第一个字符串的长度相同。 Nite 不适用于空数组

【讨论】:

  • 这不是比较每个字符串元素的长度和数组的大小吗?
  • 需要改成Words[0].Length
【解决方案2】:

您发布的代码将比较每个字符串的长度(以字符为单位)与整个数组的长度(以元素数量为单位),因为myArray.Length 给出了数组中的元素数量,而"string".Length给出字符数。您要做的过程是记录第一个字符串的长度,并将该长度与数组中的每个字符串进行比较,看看是否有任何长度不同的字符串。

在 C# 中:

string[] myArray = new String[] {"four", "char", "word"};
boolean allSameLength = true;
int firstLen = myArray[0].Length;

for (int i = 1; i < myArray.Length; i++)
{
   if (myArray[i] != firstLen)
   {
      allSameLength = false;
   }
}

此功能封装在 pm100 的响应中。 .All() 将确定数组中的任何元素是否通过逻辑测试,lambda operator 用于通过逻辑测试以应用 (s.length==Words[0].Length)。

【讨论】:

  • 应该是myArray[i].Length != firstLen
【解决方案3】:

简单方法:

    public static bool CompareSetrings(string[] words)
    {
        // Return false is the array is empty
        if(words.Length == 0)
            return false;

        // The var will hold the length  of the first string
        int initialLength = 0;

        // Iterating trough string array
        for(int i = 0; i < words.Length; i++)
        {
            // Initialize on first iteration for further comparaison with the first string length
            if(i == 0) initialLength = words[i].Length;
            
            
            if (initialLength != words[i].Length)
            {
                // If the length is different, return false
                return false;
            }
        }
        return true;
    }

【讨论】:

  • 为什么不直接使用int initialLength = words[0].Length 并删除每个循环中的比较?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多