2016-04-14 10 views
4

注:この質問は、VB.NET自体についてではなく、Visual Studio 2015 Basicエディタの特定の機能に関するものです。連結されたVB.NET文字列リテラルを複数行の文字列に変換

私はこのようになりますいくつかのレガシーコードがあります:ロズリンはVBでmulti-line string literalsを導入していますので

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

を、私はこれにそれを変換したい:

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

(私がいることを知っています2つ目の行には改行と空白が追加されているため、2つの行は正確には等価ではありません。内容は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*" 

これは引用符とアンパサンド1行の末尾に、改行が続くと空白と引用符と一致します次の行の先頭に:

enter image description here

交換は次のようになります。

\r\n 

一致するテキストを新しい行に置き換えるには。

あなたは、各行の先頭に空白を保持見つける表現でそれをキャプチャするキャプチャグループ(括弧)を使用する場合:

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

を、交換にバックに入れて、 $1使用:

\r\n$1 

enter image description here

関連する問題