代码之家  ›  专栏  ›  技术社区  ›  Daarwin

拆分字符串并保持分隔符的顺序[重复]

  •  0
  • Daarwin  · 技术社区  · 6 年前

    有没有一种聪明的方法可以在C#中进行以下字符串操作?

    我有任何类型的字符串,我正在寻找一个指定的分隔符。代码应该在分隔符之前和之后用单词分隔字符串,还应该包括分隔符。分隔符可以是一行中的几次,也可以是开头或结尾。

    // PSEUDO CODE
    string = "Hello****wide****world";
    delimiter = "****";
    
    // result should be a list<string> like
    {"Hello","****","wide","****","world"}
    
    6 回复  |  直到 6 年前
        1
  •  1
  •   D-Shih    6 年前

    你可以试着用 Regex (\*{4}) .

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

    1. * 你需要在regex中使用关键字,所以 \

    c# online

        2
  •  0
  •   wale A    6 年前

    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;
    
        3
  •  0
  •   Keyur Ramoliya    6 年前

    你可以这样做。最后,可以在 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);
        }
    }
    
        4
  •  0
  •   sicKo    6 年前

    未经测试

    string[] words = Regex.Split(originalString, @"(?=****)");
    List<string> wordsLst = words.ToList();
    
        5
  •  0
  •   Cornelis    6 年前

    string input = "Hello****wide****world";
    string pattern = "(****)";
    
    string[] substrings = Regex.Split(input, pattern);
    
        6
  •  0
  •   habib    6 年前
    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();