C# 根据用户指定的多个分隔符拆分字符串
更新:谢谢你的回答,但我不同意我的问题是由另一个线程回答。多分隔符和多字符分隔符是两个不同的问题 这是我目前的代码:C# 根据用户指定的多个分隔符拆分字符串,c#,string,split,C#,String,Split,更新:谢谢你的回答,但我不同意我的问题是由另一个线程回答。多分隔符和多字符分隔符是两个不同的问题 这是我目前的代码: List<string> delimiters = new List<string>(); List<string> data = new List<string> { "Car|cBlue,Mazda~Model|m3", //More data
List<string> delimiters = new List<string>();
List<string> data = new List<string>
{
"Car|cBlue,Mazda~Model|m3",
//More data
};
string userInput = "";
int i = 1;
//The user can enter a maximum of 5 delimiters
while (userInput != "go" && i <= 5)
{
userInput = Console.ReadLine();
delimiters.Add(userInput);
i++;
}
foreach (string delimiter in delimiters)
{
foreach (string s in data)
{
//This split is not working
//string output[] = s.Split(delimiter);
}
}
因此,如果用户输入| c和~,则预期输出为:Car、Blue、Mazda、Model | m3
如果用户输入| c、| m和,,则预期输出将是:Car、Blue、Mazda~Model,3有一个重载,正好可以实现这一点-您只需将列表转换为字符串[]:
将用户输入添加到列表分隔符中
string data = "Car|cBlue,Mazda~Model|m3";
List<string> delimiters = new List<string>();
delimiters.Add("|c");//Change this to user input
delimiters.Add("|m");//change this to user input
string[] parts = data.Split(delimiters.ToArray(), StringSplitOptions.RemoveEmptyEntries);
foreach (string item in parts)
{
Console.WriteLine(item);
}
您可以使用SelectMany从所有数据字符串中获取结果,使用ToArray方法从分隔符创建数组
可能重复的我不明白为什么您不能使用拆分已采用的数组。@sab669多个分隔符和多个字符分隔符是两个完全不同的问题。问题是,我无法硬编码分隔符,因为它们是由用户指定的。编辑了您的要求的答案。只需添加逻辑,即可将所有用户输入获取到列表对象中。它不起作用。。。我想我的问题更多的是关于如何分配动态分隔符,因为我不能硬编码分隔符。用户必须指定them@C.J.查看我的编辑-只需将列表转换为字符串数组即可。
string data = "Car|cBlue,Mazda~Model|m3";
List<string> delimiters = new List<string>();
delimiters.Add("|c");//Change this to user input
delimiters.Add("|m");//change this to user input
string[] parts = data.Split(delimiters.ToArray(), StringSplitOptions.RemoveEmptyEntries);
foreach (string item in parts)
{
Console.WriteLine(item);
}
var result = data.SelectMany(s => s.Split(delimiters.ToArray(), StringSplitOptions.None));