将包含新行字符的字符串从VB.NET传递到C#.NET

时间:2016-11-23 19:58:53

标签: c# .net vb.net string

我有一个VB程序,它将一个字符串作为输入传递给C#方法。输入可能包含转义字符,例如\ n,C#方法会尝试拆分它。

示例VB方法:

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

示例C#方法:

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

然而,当C#方法接收到字符串时,它的形式是" Hello \\ nWorld"它不会在分隔符上分裂\ n。

从我用谷歌搜索的各个帖子中,我认为VB将转义序列视为字符串的常规部分,因此C#会在其上抛出双斜线以对其进行字面处理。

如果我的猜测甚至接近事实,是否有办法传递字符串以便C#可以在\ n上分割?

编辑:感谢您的建议。我已经向VB Sub添加了一些测试调用,并将使用第三个测试调用(替换为vbLf)。

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

1 个答案:

答案 0 :(得分:1)

抱歉,我在StackOverflow上发布新内容。我想出了我需要的东西,并认为我应该添加帖子而不是编辑我原来的回复。

在我将其传递给C#方法之前,我将在我的字符串上运行.Replace。它已正确收到,可以成功拆分。感谢Sehnsucht建议vbLf,因为Environment.Newline并不适合我。

MyStringInput.Replace("\n", vbLf)