Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据分隔符提取部分字符串_C# - Fatal编程技术网

C# 根据分隔符提取部分字符串

C# 根据分隔符提取部分字符串,c#,C#,我需要帮助开发一个逻辑,当用户输入“分隔符”时,该逻辑将提取字符串的一部分 例如: string data = "|cBlue|pDaisy|pRose|mTomato|mWheat|pCabbage|p100 units|d19.0"; string userInput = //User enter input 因此,如果用户输入“| c”,则应返回“蓝色” 如果用户输入“| m”,则应将“番茄”、“小麦”作为两个字符串返回 如果用户输入“| p”,则应将“雏菊”、“玫瑰”、“卷心菜”和“1

我需要帮助开发一个逻辑,当用户输入“分隔符”时,该逻辑将提取字符串的一部分

例如:

string data = "|cBlue|pDaisy|pRose|mTomato|mWheat|pCabbage|p100 units|d19.0";
string userInput = //User enter input
因此,如果用户输入“| c”,则应返回“蓝色”

如果用户输入“| m”,则应将“番茄”、“小麦”作为两个字符串返回

如果用户输入“| p”,则应将“雏菊”、“玫瑰”、“卷心菜”和“100个单位”作为4个不同的字符串返回

如果用户输入不存在的内容,例如| z,它将不返回任何内容或返回空字符串“”

注意:这只是一个示例数据,实际数据由| a-| z,| a-| z组成,以标记字符串

然后迭代每个标记。拉出其第一个字符,并使用第一个字符作为键,其余字符作为值,构建一个
字典


然后简单地对所需字符进行字典查找,以找到相关的标记。

首先获取输入,对其进行解析。使用
Split
方法,然后按首字母过滤
单词,如下所示:

var userInput = Console.ReadLine();

if(userInput.Length == 2)
{
    var words = data.Split(userInput[0]).Where(x => x.StartsWith(userInput[1].ToString()));

    if(words.Any())
    {
       var result = words.Select(x => x.Substring(1)).ToList();
    }
    else 
    {
       // no word found
    }
}

您在尝试解决此问题时尝试了什么?您的实现存在哪些问题?用户输入的idf是“:x”?为什么第一个结果不是蓝色的?换句话说,“|”的硬编码有多高?用户为什么必须输入它?我尝试过类似的方法,但它不起作用。使用.Split时,它将删除分隔符本身。因此,在这种情况下,假设用户输入“| c”,最终结果将是“蓝色”,因此如果搜索第一个字符,它将是“B”,而不是“c”@c.J。因此,将
放回每个标记上。或者在进行字典查找之前将其从用户输入中删除。要有创意。。。作为一名程序员,你必须使用一些基本的创造性问题解决技能来处理类似的情况。