在C#中是否有一种聪明的方法来执行以下字符串操作?
我有任何类型的字符串,我正在寻找指定的分隔符。该代码应在定界符前后将字符串分成单词,还应包括定界符。分隔符可以连续几次,也可以在开始或结尾。
// PSEUDO CODE
string = "Hello****wide****world";
delimiter = "****";
// result should be a list<string> like
{"Hello","****","wide","****","world"}
答案 0 :(得分:1)
您可以尝试使用Regex
,并且模式为(\*{4})
。
string data = "Hello****wide****world";
string[] words = Regex.Split(data, @"(\*{4})");
List<string> result = words.ToList();
注意
*
是正则表达式字符串中的关键字,因此您需要使用\
对其进行转义。答案 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();