分割字符串并按顺序保留定界符

时间:2018-09-24 07:47:23

标签: c# string

在C#中是否有一种聪明的方法来执行以下字符串操作?

我有任何类型的字符串,我正在寻找指定的分隔符。该代码应在定界符前后将字符串分成单词,还应包括定界符。分隔符可以连续几次,也可以在开始或结尾。

// PSEUDO CODE
string = "Hello****wide****world";
delimiter = "****";

// result should be a list<string> like
{"Hello","****","wide","****","world"}

6 个答案:

答案 0 :(得分:1)

您可以尝试使用Regex,并且模式为(\*{4})

string data = "Hello****wide****world";

string[] words = Regex.Split(data, @"(\*{4})");
List<string> result = words.ToList();

注意

  1. *是正则表达式字符串中的关键字,因此您需要使用\对其进行转义。

c# online

答案 1 :(得分:0)

我会说用定界符分割字符串,然后在创建结果时在数组中的每个项目之后添加定界符。

string fullWord = "Hello****wide****world";
string delimiter = "****";

var listOfWords = fullWord.Split(delimiter);
List<string> result = new List<string>();

foreach(var item in listOfWords){
  result.Add(item);
  result.Add(delimiter);
}

return result;

答案 2 :(得分:0)

您可以这样做。最后,您可以遍历result

string input = "Hello****wide****world";
string delimiter = "****";

var listOfWords = input.Split(new string[] { delimiter }, StringSplitOptions.None);
List<string> result = new List<string>();

foreach (var item in listOfWords)
{
    if (!item.Equals(listOfWords.Last()))
    {
        result.Add(item);
        result.Add(delimiter);
    }
    else
    {
        result.Add(item);
    }
}

答案 3 :(得分:0)

未测试

string[] words = Regex.Split(originalString, @"(?=****)");
List<string> wordsLst = words.ToList();

答案 4 :(得分:0)

用户正则表达式可以做到这一点:

{{1}}

答案 5 :(得分:0)

string fullWord = "Hello****wide****world";
string delimiter = "****";

var listOfWords = fullWord.Split(delimiter);
StringBuilder result = new StringBuilder("");
result.Append("{");
foreach(var item in listOfWords){
  if (!item.Equals(listOfWords.Last()))
  {
       result.Append($"\"{item}\",\"{delimiter}\",");
  }
  else
  {
       result.Append($"\"{item}\"");
  }
}
result.Append("}");
var stringResult=result.ToString();