【问题标题】:Getting a substring 2 characters at a time [duplicate]一次获取2个字符的子字符串[重复]
【发布时间】:2013-03-18 18:03:39
【问题描述】:

我有一个看起来像这样的字符串:

0122031203

我希望能够解析它并将以下内容添加到列表中:

01
22
03
12
03

所以,我需要获取每 2 个字符并提取它们。

我试过了:

 List<string> mList = new List<string>();
 for (int i = 0; i < _CAUSE.Length; i=i+2) {
     mList.Add(_CAUSE.Substring(i, _CAUSE.Length));
 }
 return mList;

但这里有些不对劲,我不断收到以下信息:

索引和长度必须引用字符串中的位置。范围 名称:长度

我弄错了吗?

【问题讨论】:

  • 使用调试器和特别是中间窗口来理解为什么这样的事情不起作用是很棒的。比如看_CAUSE.Substring(i, _CAUSE.Length)
  • 这里有一些可重复使用的解决方案:stackoverflow.com/questions/4133377/…

标签: c# asp.net .net


【解决方案1】:

使用 Linq 怎么样?

string s = "0122031203";
int i = 0;
var mList = s.GroupBy(_ => i++ / 2).Select(g => String.Join("", g)).ToList();

【讨论】:

  • 谢谢,对于我有限的 LINQ 知识来说,这看起来有点过分了 :)
【解决方案2】:

我相信您可能在 Substring 函数中错误地指定了长度。

尝试以下方法:

List<string> mList = new List<string>();

for (int i = 0; i < _CAUSE.Length; i = i + 2)
{
    mList.Add(_CAUSE.Substring(i, 2));
}

return mList;

如果您希望将其拆分为每个 2 个字符的块,则长度应为 2。

【讨论】:

  • 当然,您也必须停止在 (_CAUSE.Length - 2) 处进行迭代
  • 它适用于 _CAUSE.LENGTH。谢谢马丁!
【解决方案3】:

当你做子串时,试试 _CAUSE.SubString(i, 2)。

【讨论】:

    【解决方案4】:

    2点: 1)如前所述,应该是substring(i,2); 2) U 应考虑字符串长度为奇数的情况。例如 01234:你想要它 01 23 并且你会丢弃 4 还是你想要它是 01 23 4 ?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-20
      • 2022-11-17
      • 2014-03-04
      • 2018-09-27
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      相关资源
      最近更新 更多