2016-11-23 17 views
-1

文字列を入力としてC#メソッドに渡すVBプログラムがあります。入力には、C#メソッドが分割しようとする\ nのようなエスケープ文字を含めることができます。VB.NETからC#.NETに改行文字を含む文字列を渡す

例VB法:

Module VBClass 
Sub Main() 
    Dim c As CSharpClass = New CSharpClass() 
    c.MyMethod("Hello\nWorld\nFrom\nMike") 
End Sub 
End Module 

例C#方法:C#メソッドは文字列を受信したとき

public class CSharpClass 
{ 
    public void MyMethod(string input) 
    { 
     string[] sSplit = input.Split('\n'); 
    } 
} 

しかし、それは形式だではないだろう "こんにちは\\ nWorld"区切り文字で分割します。\ n

私はGoogledの様々な投稿から、VBはエスケープシーケンスを文字列の正規の部分として扱い、C#は文字通りそれを処理するためにダブルスラッシュをスローすると思います。

私の推測が真実に近い場合でも、C#が\ nで分割できるように文字列を渡す方法はありますか?

編集:ありがとうございます。私はいくつかのテスト呼び出しをVB Subに追加して、3つ目のもの(vbLfで置き換えます)を実行します。

c.MyMethod("Hello" + Environment.NewLine + "World") 
    c.MyMethod("Hello" + vbLf + "World") 
    c.MyMethod("Hello\nWorld\nFrom\nMike".Replace("\n", vbLf)) 
+1

あなたの前提は間違っています。あなたの問題を示すコンパイル可能なコードを投稿するのはどうですか? –

+1

VB.NETは\ charをエスケープ文字と見なしません。それは文字通り\として扱われるので、C#側で正しい値を受け取っています。 – wdosanjos

+3

'CSharpMethod(" Hello "&vbLf&" World ")' – Sehnsucht

答えて

1

申し訳ありません、私はStackOverflowで投稿しています。私は必要なものを見つけ出し、私の元の反応を編集するのではなく、投稿を追加すべきだと思っています。

私は文字列で.Replaceを実行してから、C#メソッドに渡します。それは正常に受信され、正常に分割することができます。 Environment.Newlineが私のために働いていなかったので、vbLfを提案したSehnsuchtに感謝します。

MyStringInput.Replace("\n", vbLf) 
+0

'Environment.NewLine'はうまくいっていたかもしれませんが、ドキュメントに書かれているように環境に依存して微妙なバグが隠されていました – Sehnsucht

+0

この投稿はあなたの問題の解決方法を記述しているので、 –

関連する問題