【发布时间】:2019-09-11 18:45:39
【问题描述】:
我正在开发一个程序,该程序对要在URL 中使用的字符串进行编码,而无需使用将为我进行编码的库。
想法是一个字符串被传递给这个函数,字符串的每个字符都被迭代。如果字符正常,则将其添加到编码字符串中。如果失败,则对其进行更正,然后将其添加到编码字符串中。我的想法是做多个if/if-else 语句来替换任何坏字符,但我似乎无法弄清楚如何正确地做到这一点。
static string Encode(string value)
{
string encodedValue = "";
foreach (char character in value.ToCharArray())
{
if(character == ' ')
value.Replace(character, '%20');
// Add to encodedValue
}
return encodedValue;
}
显然这不起作用,因为我无法以这种方式将字符替换为大于字符的字符。例如,如何将字符串中的空格替换为代码%20?
【问题讨论】:
-
您不能修改
foreach循环中的任何内容,因为它由语言管理,因此无法预测您所做的更改,您也无法告诉它如何手动预测更改。因此,正如答案所暗示的,您可以克隆和替换克隆中的字符,而不是使用原始字符。请记住,在标准的for循环中,您不必担心这一点。