【问题标题】:How to select the comma in multidimensional array?如何选择多维数组中的逗号?
【发布时间】:2017-08-21 15:28:33
【问题描述】:

我已经开发了很长时间的应用程序,我从使用矩形数组开始:

int[,] array = new int[900,800]

但是在给它一些更高的值之后,结果发现它导致了很多 OutOfMemoryException 问题,所以我决定用这样的多维数组替换它:

int[][] array /*init stuff*/

但是在这样做之后,编译器给了我大约 3000 个错误(显然),这需要很多时间来手动修复,所以我开始考虑用正则表达式替换所有的 ',' 为 ']['。我想在所有数组方括号内选择 , 。 到目前为止,我得到了:

(?<=array\[).*,

其中选择了','对,但也选择了索引的其余部分,如:

array[aaa,bbb]
      ^^^^
array[bbbb,ccc]
      ^^^^^

有没有办法只选择','比如:

array[aaa,bbb]
         ^

注意:它不一定是 100% 完美的,但我希望它在大多数情况下都能正常工作。 谢谢。

【问题讨论】:

  • 您是使用 C# 代码执行正则表达式搜索,还是仅在 Visual Studio 的搜索对话框中执行搜索?
  • VS 搜索对话框
  • (?&lt;=array\[[^,]*), 呢?

标签: c# regex visual-studio regex-lookarounds


【解决方案1】:

你可以使用这个表达式:

\[([0-9]+),\s*([0-9]+)\]

并将其替换为:

[$1][$2]

此表达式匹配的次数远低于您当前的尝试,这将导致匹配错误的可能性较小。

【讨论】:

  • 稍微修改了一下,效果很好。问题是它只会选择数字。 array\[(.+),\s*(.+)\]
猜你喜欢
  • 2015-06-23
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
相关资源
最近更新 更多