拆分带有开始和结束字符的字符串

时间:2011-10-06 13:09:46

标签: c# split

我需要拆分一个带有“变量序列”的字符串。

例如,我有这个字符串:

string myString="|1 Test 1|This my first line.|2 Test 2|This is my second line";

我需要获得一个字符串数组:

这是我的第一行 这是我的第二行。

而在同一时间,最好的将是得到这个:
| 1 Test1 |
这是我的第一行 | 2 Test2 |
这是我的第二行

有任何帮助吗?

6 个答案:

答案 0 :(得分:3)

您可以使用正则表达式来分割字符串,例如

string str = "|1 Test 1|This is my first line.|2 Test 2|This is my second line.";
var pattern = @"(\|(?:.*?)\|)";
foreach (var m in System.Text.RegularExpressions.Regex.Split(str, pattern))
{
    Console.WriteLine(m);
}

只丢弃第一个条目(因为它将是空白的)

答案 1 :(得分:2)

string.Split与|作为参数和子字符串,如果string.StartsWith数字和string.EndsWidth数字加|开始和结束。这有用吗?

答案 2 :(得分:1)

string[] myStrings = myString.Split('|');

这将为您提供一个由以下组成的4元素数组:

1 Test 1
This is my first line.
2 Test 2
This is my second line.

从那里开始,我认为你将被迫迭代数组的元素,并根据当前元素的内容确定后续元素的正确行动方案。

答案 3 :(得分:1)

使用LINQ你可以这样做:

public IEnumerable<string> GetLines(string input)
{
    foreach (var line in input.Split(new [] {'|' }, StringSplitOptions.RemoveEmptyEntries))
    {
        if (Char.IsDigit(line[0]) && Char.IsDigit(line[line.Length - 1]))
            yield return "|" + line + "|";

        yield return line;
    }
}

答案 4 :(得分:0)

string myString = "|1 Test 1|This my first line.|2 Test 2|This is my second line";
            string[] mainArray = myString.Split('|');
            String str = "";
            List<string> firstList = new List<string>();
            List<string> secondList = new List<string>();
            for (int i = 1; i < mainArray.Length; i++)
            {
                if ((i % 2) == 0)
                {
                    str += "\n|" + mainArray[i];
                    firstList.Add(mainArray[i]);
                }
                else
                {
                    str += "\n|" + mainArray[i] + "|";
                    secondList.Add(mainArray[i]);
                }
            }

答案 5 :(得分:0)

用'|'拆分字符串并手动添加它们似乎是最好的策略。

        string s = "|test1|This is a string|test2|this is a string";
        string[] tokens = s.Split(new char[] { '|' });

        string x = "";

        for (int i = 0; i < tokens.Length; i++)
        {
            if (i % 2 == 0 && tokens[i].Length > 0)
            {
                x += "\n" + tokens[i] + "\n";

            }
            else if(tokens[i].Length > 0)
            {
                x += "|" + tokens[i] + "|";
            }
        }