看着这个:
MENU_ITEM_BACK#0="Back";
MENU_ITEM_BLOCK_CHANNEL#0="Block";
MENU_ITEM_CLOSE#0="Close";
MENU_ITEM_DETAILS#0="Details";
MENU_ITEM_DIAGNOSE#0="Diagnose";
MENU_ITEM_DOWNLOAD#0="Download";
......依此类推(超过500行)。什么是自动将标签名称复制到标签本身的最佳方法。例如,
MENU_ITEM_BACK#0="Back";
会变成
MENU_ITEM_BACK#0="MENU_ITEM_BACK";
我最熟悉Java但不反对任何其他编程语言,尽管我对正则表达式(至少是编码语言)不是很熟悉。
编辑:我注意到'#0 ='并不总是不变的。有时它们可以被一个非常随意的数字替换,例如'#6548135 ='。给出的答案很好,但由于我不熟悉正则表达式,你会如何适应这个?请注意,我不想复制数字,只是标签。
答案 0 :(得分:2)
我认为正则表达式是一个不错的选择,假设标签不能包含任何#
个字符。只需更换
^([^#]+#0)=".*";$
与
\1="\1";
如果要在程序或脚本中执行此操作,则需要使用所选语言的正则表达式设置。
如果您只想为此特定文件执行此操作一次,则可以使用sed:
执行此操作$ sed -e "s/^([^#]+#0)=".*";$/\1=\"\1\"/" file
答案 1 :(得分:1)
正则表达式,例如使用sed:
sed -r 's/^([^#]+)([^=]+)=.*$/\1\2="\1"/' yourfile.txt
Python中的相同内容:
import sys
import re
for line in sys.stdin.readlines():
print re.sub('^([^#]+)([^=]+)=.*$', r'\1\2="\1"', line).rstrip()
用法:
python program.py < yourfile.txt
答案 2 :(得分:1)
使用正则表达式搜索和替换,例如使用Perl,sed,awk或许多最近的文本编辑器支持。
在Perl中,这可以解决问题:
my $text = <<END_YOUR_TEXT;
PUT YOUR TEXT HERE
END_YOUR_TEXT
$text =~ s/(MENU_ITEM_[^#]+)#0="[^"]+";/$1#0="$1";/g
print $text;
“$ 1”是对带括号的匹配的引用,例如MENU_ITEM_BACK。
要从命令行中的文件中读取文本,请将其插入:
我的$ text =&lt;&gt ;;
答案 3 :(得分:1)
您可以在不使用Microsoft Word的正则表达式的情况下执行此操作。将代码部分复制到Word中。然后使用列选择(按住alt键并用鼠标选择),然后将其复制到右侧,并使用搜索和替换进行清理。