【问题标题】:C# Increment Alphabet character [duplicate]C#递增字母字符[重复]
【发布时间】:2017-11-03 22:40:21
【问题描述】:

我正在尝试将字符串的第一个字符增加到字母表中的下一个字母。

我找到了这个:

string str_A1 = "A1";
string str_B;

str_B= str[0]++;

这里str_B 应该是“B”,但我收到一条错误消息:

无法将属性或索引器“string.this[int]”分配给——它是只读的

【问题讨论】:

  • 这个问题有一些新的变化。什么是 str[]?它看起来像一个数组,但你不解释内容是什么。而且你不应该这样做 str[0]++。如果需要,增加索引或从 str[0] 检索的值
  • 代码甚至无法编译,从什么时候开始可以增加一个字母?您至少需要对“A”之后的内容进行某种参考。
  • ToCharArray(), [0]++, new string(...).
  • 问题已得到解答,但这就是您的代码无法编译的原因:String 是不可变的。这意味着您不能修改字符串。对字符串的所有操作仅返回字符串的副本(替换、删除、子字符串等)。因此,索引器 ([] op) 只定义了一个 get++ 运算符返回关联变量的值,然后递增该值并影响该变量的新值。由于++ 会影响关联变量的增量值,因此它会尝试调用索引器上的集合。但正如我所说,没有这样的set

标签: c# unity3d


【解决方案1】:

你不能修改 str_A1 的第一个字符的值,这是 ++ 运算符所做的。改为这样做:

str_B = ((char)(str[0] + 1)).ToString();

【讨论】:

  • 这会给他整数答案。
  • 你试过这个解决方案吗??
  • 哦,你是对的。让我解决它。
  • 好的,看起来您编辑的解决方案有效
  • @RewForeN 尝试新的编辑。将 int 转换回 char 是我的错误。
【解决方案2】:

你可以这样做:

string str_A1 = "A1";
string str_B = (char)(str_A1[0] + 1) + str_A1.Remove(0, 1);

【讨论】:

  • 更完整的答案,因为它考虑了完整的字符串,而不仅仅是第一个字符。
猜你喜欢
  • 2015-08-28
  • 2014-10-08
  • 2010-10-29
  • 2011-07-21
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多