你能帮我用正则表达式来改变行吗
<string name="Final time">Final time</string>
<string name="After extra time">After extra time</string>
Run Code Online (Sandbox Code Playgroud)
到行
<string name="final_time">Final time</string>
<string name="after_extra_time">After extra time</string>
Run Code Online (Sandbox Code Playgroud)
因此,双引号之间用下划线替换空格并使所有字母小写。
我将在 VIM 中使用这个正则表达式进行搜索/替换。
通用方法:
:%s/\(<string name="\)\(\u\)\([^" ]\+\) \([^" ]\+\)/\1\l\2\e\3_\4/
Run Code Online (Sandbox Code Playgroud)
这将替换每个字符串@name
\u) 开头并且\([^" ]\+\) \([^" ]\+\)) 和\l\2\e)。要使 @name 中的所有内容都小写,可以简化:
:%s/\(<string name="\)\([^" ]\+\) \([^" ]\+\)/\1\l\2_\3_\e/
Run Code Online (Sandbox Code Playgroud)
要消除多个空格,请执行两个步骤。首先,将属性值设置为小写:
:%s/\(<string name="\)\([^"]\+\)/\1\l\2\e/
Run Code Online (Sandbox Code Playgroud)
然后,将属性值中的每个空格替换为下划线
:%s/\(<string name="[^"]*\)\@<= /_/g
Run Code Online (Sandbox Code Playgroud)
请注意,这\@<=是 vim 表达肯定的后视断言的方式。