2016-04-14 114 views
4

注意:此問題不是關於VB.NET本身,而是關於Visual Studio 2015 Basic編輯器的特定功能。將連接的VB.NET字符串文字轉換爲多行字符串

我有一些遺留的代碼看起來像這樣:

Dim someText = 
    " a " & 
    " AND b " & 
    " AND cd " & 
    " AND efg " & 
    " AND h " 

由於羅斯林在VB推出了multi-line string literals,我想將其轉換爲這樣的:

Dim someText = 
    " a 
     AND b 
     AND cd 
     AND efg 
     AND h " 

(我知道,兩個不完全等價,因爲第二個包含額外的換行符和空格,這很好,讓我們假設內容類似於SQL或HTML,其他空白不重要。)

現在,我的方法是如下:首先,我block-select起始報價(除了第一個),並用空格替換它們:

Dim someText = 
    " a " & 
    AND b " & 
    AND cd " & 
    AND efg " & 
    AND h " 

然後我點擊進入a線修復後報價和會發生以下情況:

Dim someText = 
    " a " & 
     And b " & 
     AND cd " & 
     AND efg " & 
     AND h " 

第一「和」資本化弄亂。

我明白爲什麼會發生這種情況。我甚至用filed a bug report來解決類似的問題。不幸的是,如果引用總數是奇數,這種修正(顯然使其進入VS 2015 Update 2)僅有幫助,但在此情況並非如此。

是否有人找到一種解決方法,將大塊連接字符串重新格式化爲多行字符串文字而不需要Visual Studio搞亂字符串內容?我知道我可以在全球範圍內打開漂亮的格式(工具/選項/文本編輯器/基本/高級),但是有更好的解決方案嗎?

回答

7

您可以使用查找和替換。打開正則表達式:

enter image description here

,並使用此表達式:

" &\r\n\s*" 

這將匹配在一行結束的報價和符號,然後換行和任何空白及報價在下一行的開始:

enter image description here

替換則是:

\r\n 

用新行替換匹配的文本。

如果你想在每行的開始保留空白,使用捕獲組(括號)捕捉到它在查找表達式:

" &\r\n(\s*)" 

,並把它背在更換,使用$1

\r\n$1 

enter image description here