我试图弄清楚如何逐步执行这段代码,以更好地理解它。您在控制台中输入一个单词,它会将单词反向弹出。
我可以遵循代码,直到进入array[name.Length - i] = name[i - 1];
var array = new char[name.Length];
for (var i = name.Length; i > 0; i--)
array[name.Length - i] = name[i - 1]; <------
我不知道如何翻译这一行代码的步骤。为什么我们从name.Length中减去1,然后再用
i
表示它本身减去?从i
中的name[i - 1]
减去1有什么作用? 最佳答案
循环从i
等于name
的长度开始,并在每次迭代中从i
减去1。
因此,在第一次迭代中,name.Length - i
等于0,而i-1
等于name.Length -1
。
在下一次迭代中,name.Length - i
等于1,而i-1
等于name.Length -2
,依此类推。
通过将name[x]
处的char分配给array[y]
,循环将每个字符从name
数组复制到array
数组-因此,当循环结束时,array
数组正好是的反向副本。 name
数组。
我整理了一个small demo on rextester,因此您可以看到它正在运行。
请注意,这不是反转字符串的最佳方法,尤其是在使用非英语语言时。
某些语言使用的字母由多个字符组成,例如,法语的重音使用Ç, é, â, ê, î, ô, û, à, è, ù, ë, ï and ü.
对于这些languanges,仅逐个字符反转char会导致字符串中的重音位于错误的字母上。要获得正确的反向字符串,请检查R. Martinho Fernandes的answer至this SO post。
关于c# - 如何理解C#反向命名练习?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50111530/