gpt4 book ai didi

perl - 在perl中输入一定数量的字符后,如何将字符串输入到文本文件中?

转载 作者:行者123 更新时间:2023-12-04 05:17:41 24 4
gpt4 key购买 nike

我有一个很长的 sql 查询,我试图将它放入 VBA for Excel 中。 VBA for Excel 对一行中可以显示的文本数量有限制,似乎大约为 1000 个字符。我想要做的是将查询复制到文本文件并通过 perl 脚本运行它并输出到文本文件,它的格式与 VBA 所需的格式相同。

我需要 Perl 将字符计数到 1000,然后写入 ("& _) 然后换行然后 (") 然后重复该过程直到文件结束。空格或字符类型无关紧要。非常感谢任何帮助。我会经常回来查看是否有人需要更多信息。谢谢!!!

最佳答案

如果文本已经在字符串中,一种方法是:

$string =~ s/(.{1000})/$1" & _\n"/sg;
print '"', $string, '"';

或者,也许更好:
my @chunks = unpack '(A1000)*', $string;
s/\"/""/g, s/\n/" & vbCrLf & _\n"/g for @chunks; # escape special characters
print '"', join(qq(" & _\n"), @chunks), '"';

如果您正在从文件中读取输入,也可以通过设置 input record separator 来执行此操作,而无需将所有输入读取到内存中:
{
local $/ = \1000; # read input in chunks of 1000 chars
print '"';
while ( <> ) {
s/\"/""/g; s/\n/" & vbCrLf & _\n"/g; # escape special characters
print $_, qq(" & _\n");
}
print '"';
}

(其中一些方法有时会在最后一行留下一个毫无意义的 ""——事实上,最后一个方法总是会这样做——但我认为这应该不是问题。)

最后,请注意,这些方法都不会对可能出现在输入中的任何特殊字符(如双引号)进行转义。如果您的输入可能包含此类字符,则需要单独处理它们。如果需要,我已经标记了可以插入代码的位置。

编辑: 我做了一些谷歌搜索,看起来像双引号 VBA 字符串中需要转义的主要字符是双引号(需要加倍)和换行符(没有简单的编码,需要处理)带有像 " & vbCrLf & " 这样的 kluge )。我已经编辑了上面的代码来实现这种转义。
我想,如果想要更加确定,还可以使用以下内容转义所有不可打印和非 ASCII 字符:
s/([^\n -~])/sprintf '" & Chr(%d) & "', ord $1/eg

(Ps. s/\"/""/g 中的反斜杠只是为了避免混淆 SO 的语法荧光笔。)

关于perl - 在perl中输入一定数量的字符后,如何将字符串输入到文本文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com