【发布时间】:2013-05-06 01:28:08
【问题描述】:
现在,我有两个 char 数组,foo1[] 和 foo2[]。当我将它们转换为字符串并输出到控制台时,它们都显示为bar。我知道我可以这样做:
int g;
for (int i=0;i<length.foo1;i++) { // loop from 0 to length of array
if (foo1[i]=foo2[i]) { // if foo1[0] and foo2[0] are the same char
g++; // increment a counter by 1
}
else // otherwise...
{
i=100; // set i to something that will halt the loop
}
if (g = length.foo1) { // if the incremented counter = length of array
return true; // arrays are equal, since g only increments
} // in the case of a match, g can ONLY equal the
else { // array length if ALL chars match
return false; // and if not true, false.
逐个字母比较,但我猜有更简单的方法。有趣的是,我为comparing char[] for eqivalency c# 和类似关键字所做的大部分谷歌搜索都会导致关于比较字符串数组或比较字符串或字符数组的信息一团糟……当数组的一部分匹配某些东西时……我没有能够找到任何关于测试 char 数组是否相等的简单方法。遍历每个数组是最好的方法吗?或者有什么方法可以比较 foo1=foo2 还是 foo1==foo2?这些都不适合我。
基本上,我需要测试char foo1[] 和char foo2[] 是否都是{B,A,R}
【问题讨论】:
-
你在说什么等价?你想如何处理文化比较?还是您只对 ordinal 等价感兴趣?请注意,这显然不是您的实际 C# 代码,因为
<>在 C# 中无效,并且您正在尝试增加未初始化的变量。哦,然后您的if语句没有布尔条件。目前还不清楚该代码是是什么意思...... -
我会澄清这个问题......当我说“我可以做这样的事情”时......我没有澄清这是伪代码。我也不知道你所说的“文化比较”是什么意思,所以我不确定我是否需要担心。
-
考虑“ss”和“ß”(Eszett)。如果您正在执行文化敏感比较,则可能会被视为相等或不相等,具体取决于您使用的文化。
-
啊...了解文化敏感性。就本练习而言,cafe 不等于café,而 tschuss 不等于 tschuß,因此处理文化语言差异不会成为问题……在某些情况下,需要知道cafe 和cafe 解决不等于结果。