在C#中用换行符拆分字符串

时间:2016-08-18 10:53:26

标签: c# string

我有一个这样的字符串:

  

网站IÇINDEOLMOSI\nLÜKSINSAAEDILMIS OLMASI \nSITEIÇINDEYÜZMEHAVUZU,   VB。 SOSYAL YASAM ALANLARININ OLMASI。\nPROJESİNEUYGUNYAPILMIŞOLMASI

我正在尝试拆分并保存此字符串,如下所示:

array2 = mystring.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

foreach (var str in sarray2)
{
    if (str != null && str != "")
    {
        _is.RelatedLook.InternalPositive += str;
    }
}

我也试过

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

这显然不会分裂我的字符串。如何以正确的方式分割我的字符串?感谢

4 个答案:

答案 0 :(得分:8)

var result = mystring.Split(new string[] {"\\n"}, StringSplitOptions.None);

由于新行粘贴在您的案例中,您必须使用额外的反斜杠。

答案 1 :(得分:1)

在linqpad我能够分裂

var ug = "SITE IÇINDE OLMASI\nLÜKS INSAA EDILMIS OLMASI\nSITE IÇINDE YÜZME HAVUZU, VB. SOSYAL YASAM ALANLARININ OLMASI.\nPROJESİNE UYGUN YAPILMIŞ OLMASI";
var test = ug.Split('\n');
test.Dump();

enter image description here

答案 2 :(得分:1)

将换行的文字字符序列转换为字符串,然后按该字符串进行拆分-即

string clipboardText = Clipboard.GetText();
        string[] seperatingTags = { Environment.NewLine.ToString() };
        List<string> Lines = clipboardText.Split(seperatingTags, StringSplitOptions.RemoveEmptyEntries).ToList();

答案 3 :(得分:0)

由新行分隔非常棘手,因为它不一致,并且您可以有多行或分隔字符的不同组合。我尝试了许多方法,包括该线程中的一些方法,但是最后,我想出了自己的解决方案,似乎可以解决遇到的所有情况。

我正在使用Regex.Split进行如下清洁(我已将其包装在扩展方法中)

public static IEnumerable<string> SplitByLine(this string str)
{
    return Regex
        .Split(str, @"((\r)+)?(\n)+((\r)+)?")
        .Select(i => i.Trim())
        .Where(i => !string.IsNullOrEmpty(i));
}

用法

var lines = "string with\nnew lines\r\n\n\n with all kind of weird com\n\r\r\rbinations".SplitByLine();