一千萬個為什麽

搜索

如何用“_”替換第一個帶引號的字符串的所有空間

我有幾行,每行有兩個帶引號的字符串,我想用“_”替換第一個帶引號的字符串的所有空格。怎麽做?我可以使用宏嗎?

select 'a b c','a b c' union all
select 'a e1 c d','a e1 c d' union all
select 'a f11 c','a f11 c' union all
select 'a g1 c','a g1 c' union

結果:

select 'a_b_c','a b c' union all
select 'a_e1_c_d','a e1 c d' union all
select 'a_f11_c','a f11 c' union all
select 'a_g1_c','a g1 c' union

最佳答案

我認為宏在這裏很有用:

0vi':s/\%V /_/g^M

分解宏:

0        " go to the start of the line
vi'      " visually select inside '
:s/       " start a substitute command
\%V      " tell the substitute to operate over the last visual selection
 /_/g    " there is a ' ' here : replace every ' ' with a '_'
^M       " press 

Reference for \%V : http://vim.wikia.com/wiki/Search_and_replace_in_a_visual_selection

然後,您可以通過線路排隊,也可以同時在所有行上執行宏(請參閱 https://stackoverflow.com/a /二百五十五萬八千二百五十二分之三百三十三萬八千四百八

轉載註明原文: 如何用“_”替換第一個帶引號的字符串的所有空間