【问题标题】:I need to compare 2 strings using a For loop in c#我需要在 c# 中使用 For 循环比较 2 个字符串
【发布时间】:2015-09-09 23:57:25
【问题描述】:

我需要在不使用 String.compare 的情况下使用 For 比较 2 个字符串。 (这是一个家庭作业......我在 2 周前开始编程 C#)

我只是不知道如何使用 for 循环来回答这个问题。我不知道该放什么 for()。我尝试了for( string text1 = "something",),但我不知道在 for 循环中的后面要放什么。

【问题讨论】:

  • 好的,感谢您提前告知这是家庭作业。你有没有尝试过自己解决这个问题,你有没有特别努力的部分?如果是这样,您能否更新并分享该信息?比较的结果应该是什么,如果它们相等,只是一个简单的真/假?字符串开始不同的索引?
  • 我只是不知道如何使用 for 循环来回答这个问题。我不知道该放什么 for()。我试过 for(string text1 = "something",) 但我不知道在 for 循环中 , 后面放了什么。
  • 如果他们是平等的,那就太好了。但我不明白如何使用 for 循环通过比较 2 个字符串来获取布尔值。
  • 提示:创建一个每次比较一个字符的 for 循环。
  • @Mthb54 如果提供的答案解决了您的问题,请接受它以给予帮助者信用:)

标签: c# string compare


【解决方案1】:

由于这是一个家庭作业问题,我建议在您认为自己有足够的信息可以自行解决问题时立即停止阅读答案,然后再最终找到解决方案。 p>

让我们先假设一个简单的方法签名:

public static bool AreStringEqual(string str1, string str2)
{
}

我们的目标是实现(编写代码)这个方法。我们假设我们的目标是如果字符串相等则返回 true,如果不相等则返回 false。我们不会做任何花哨的事情,比如让它不区分大小写。

首先,我们可以对字符串进行一些基本检查。如果它们的长度不同,那么我们可以立即假设字符串不同,并返回 false:

if (str1.Length != str2.Length)
{
    return false;
}

此块检查长度,如果它们不同,则立即返回 false,并且该方法的其余部分不会被执行。

此时我们可以保证字符串的长度相同,因此我们可以遍历字符串并使用for 循环逐个字符地比较它们。

for(int counter = 0; counter < str1.Length; counter++)
{
}

这是一个非常标准的 for 循环,它只计算一个从零到小于字符串长度的数字。我们是否使用str1str2 作为循环的上限并不重要,因为我们已经知道它们的长度相同。

要获取字符串中的字符,我们可以使用Indexer Syntax 来获取给定位置的字符。在 C# 和 .NET 中,数字从零开始。

str1[0] 获取第一个字符,str1[1] 获取第二个字符,依此类推。

然后我们可以将for循环中的变量插入str1str2的索引器,然后比较字符。如果不相等,则返回 false。

for(int counter = 0; counter < str1.Length; counter++)
{
    if (str1[counter] != str2[counter])
    {
        return false;
    }
}

最后,如果代码通过 for 循环而不返回 false,则在最后返回 true。把它们放在一起,它看起来像这样:

public static bool AreStringEqual(string str1, string str2)
{
    if (str1.Length != str2.Length)
    {
        return false;
    }
    for(int counter = 0; counter < str1.Length; counter++)
    {
        if (str1[counter] != str2[counter])
        {
            return false;
        }
    }
    return true;
}

【讨论】:

  • 请注意:我很清楚我可以使用var 和其他东西。这里的目标是准确显示正在发生的事情并尽可能明确,而不是寻找最吸引人的代码。
  • 我喜欢@vcsjones 的回答,但严格来说,在尝试访问它们的 Length 属性之前,您还应该确保您的字符串参数不为空。
  • @Lorek 从最佳实践的角度来看,您是对的,但这不是这里要解释的内容的一部分。这留给OP作为练习。这个问题专门关于循环,而不是编写高效、无错误的字符串比较。据我所知,还没有教授空值、引用和异常的概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2013-04-05
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多