在文本中交换行和列

本文关键字:换行 交换 文本 | 更新日期: 2023-09-27 18:16:56

我有一个大的VBA脚本文件,引用excel工作表的单元格。问题是,我水平放置的应用程序属性的数量变得大于256,因此我必须改变存储属性的方向。

所以不是用。cells(行,列)来访问值。值,我想通过交换前一次调用中的行和列来访问所有内容。

我可以从所有代码中手动更改所有内容,但我更喜欢使用正则表达式。我想出这个是为了找到我需要的所有参考:

Worksheets'('"xxx'.DAT'"')'.Cells'(['w +-]{1,15}, ['w +-]{1,15}')

结果类似于Worksheets("xxx.DAT")。Cells(SystemNr + 1,21 + Row1)

我想在调用Cells属性时将行与列交换,因此最终结果应该看起来像Worksheets("xxx.DAT")。Cells(21 + Row1, SystemNr + 1)

我做了一个小的。net应用程序,并使用下面的代码来获得所有的匹配,但是我如何交换行与列在匹配本身?

string input = tbContent.Text;
foreach (Match match in Regex.Matches(input, tbRegex.Text, RegexOptions.IgnorePatternWhitespace))
{
    tbResult.AppendText(match + Environment.NewLine);
}

现在,对于每个匹配,我想获得行索引和列索引之一的引用,以便我可以交换它们并替换原始文本。

谢谢,艾德里安。

在文本中交换行和列

我不知道你的源数据看起来像什么,但这里有一个简短的c#示例,关于如何交换两个东西:

String s = "A:B";
Regex r = new Regex(@"('w):('w)");
Console.WriteLine(r.Replace(s, "$2:$1"));

如果您创建了一个捕获组,通过将子模式放入括号中,您可以在替换字符串中访问这些子模式的匹配。第一组(由第一个左括号定义)由$1访问,第二组由$2访问。在这个基本示例中,只需替换为第二组,然后将第二组替换为第一组,这样就改变了子匹配的顺序。