在C#中,与vbCrLf等效的内容是什么?

54

我有一个待办事项:

AccountList.Split(vbCrLf)

在C#中,AccountList是一个字符串变量。 我该如何处理它?

谢谢

10个回答

100
你正在寻找 System.Environment.NewLine
在Windows中,这相当于 \r\n,不过在其他.NET实现(例如Linux上的Mono)中可能会有所不同。

11
从理论上讲,这个答案可能在Linux/Mono上运行时会有变化......它不是"CRLF",而是“在此计算机类型上定义的换行符”。在Windows上没有风险....但是... ;) - TomTom
5
解决方案是: AccountList.Split(System.Environment.NewLine.ToCharArray())。该代码的作用是将“AccountList”字符串按照换行符分割成字符串数组。 - Luca Romagnoli
我尝试了这个代码:string[] strOptions = txtOptions.Text.Split(System.Environment.NewLine.ToCharArray()); 如果在每个选项后按回车键有四个选项,它返回7个实例而不是4个。 - Si8
@TomTom 是完全正确的。"System.Environment.NewLine" 不应该被鼓励作为 vbCrLf 的一个体面替代品。 - Crono

13

我通常会缩写以便在我的代码中多次使用。在代码的顶部附近,可以这样做:

 string nl = System.Environment.NewLine;

当我构建字符串时,我可以仅使用"nl"而不是完整的限定词。


10
AccountList.Split("\r\n");

7

在您的项目中添加对Microsoft.VisualBasic的引用。

然后插入using语句。

using Microsoft.VisualBasic;

使用预定义的常量 vbCrLf:

private const string myString = "abc" + Constants.vbCrLf;

最好使用ControlChars.CrLf,因为它还包括ControlChars.Cr和ControlChars.Lf作为字符(而不是字符串)。 - jmoreno
@jmoreno:问题是关于vbCrLf的。没有必要使用ControlChars类。但结果是相同的。 - huha
结果是相同的,但它稍后包括更多选项。 - jmoreno

6

vbCrLf常量在C#中没有等价物。C#的System.Environment.NewLine是Visual Basic中vbNewLine的等价物,它不是vbCrLf的等价物,因为System.Environment.NewLine的值取决于C#应用程序运行的操作系统(vbNewLine同理) - 可以参考msdn链接

在C#中,您可以使用"\r\n"代替vbCrLf,正如其中一个评论所提到的那样。


4

4
我认为 "\r\n" 应该可以正常工作。

2

尝试这个:

AccountList.Split(new String[]{"\r\n"},System.StringSplitOptions.None);

或者

AccountList.Split(new String[]{"\r\n"},System.StringSplitOptions.RemoveEmptyEntries);

0
public  string VB2 = System.Environment.NewLine + System.Environment.NewLine;
public string VBCrLf = System.Environment.NewLine;

MessageBox.Show("Error: " + VB2 +  E.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Exclamation );
    

1
please add some explanation - mikus

-4
"FirstLine" + "<br/>" "SecondLine"

1
这不是等价的。 - Wai Ha Lee
HTML换行符仅在C#输出到网页时有用。在C#输出到控制台或脚本(如消息框)中无用。 - Doug_Ivison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接