【问题标题】:How to split a string of characters in a 2D dictionary如何拆分二维字典中的字符串
【发布时间】:2018-05-17 13:29:45
【问题描述】:

所以我必须将存储在字符串 Content 中的这些信息放入并拆分:

ID_PLAYER_1==>Joueur 1---Player 1
ID_AMMO==>Muni---Ammo

在二维字典中,如下所示:

Dictionary<Language, Dictionary<string, string>> items = 
    new Dictionary<Language, Dictionary<string, string>>();

枚举语言将根据单词的语言确定一个字符的位置。

所以最终它会是这样的:

Player 1  Ammo
Joueur 1  Muni

我以前从未使用过二维字典,我对应该如何拆分它感到困惑。我正在研究的文本转换方法是这样的:

public ErrorCode Parse()
{    
    string Content = "@ID_PLAYER_1==>Joueur 1---Player 1
    ID_AMMO==>Muni---Ammo"
    //Content has the value: " ID_PLAYER_1==>Joueur 1---Player 1
    //ID_AMMO==>Muni---Ammo"
    items[0].Add (Content.Split(//splitting method), Content.Split())
    return ErrorCode.MISSING_FIELD;
}

枚举语言:

public enum Language
{
  French,
  English
}

错误代码:

public enum ErrorCode
{
 OK,
 BAD_FILE_FORMAT,
 MISSING_FIELD,
}

【问题讨论】:

  • 如果您能提供minimal reproducible example,那就太好了。
  • 这个编辑更好吗?
  • 我不明白期望值是什么,Language 应该怎么写,内部字典应该怎么写?
  • Language 是第一个键,它只会指示内容是否包含法语或英语单词。在内部字典中,它包含单词的 id 和单词本身。这是一个更好的例子:items[Language.English].Add("ID_AMMO","Ammo");
  • 进行了更清晰的编辑

标签: c# dictionary split


【解决方案1】:

您可以使用String.Split() 方法,将字符串作为分隔符。

因此,首先您可以将 ID 从内容中拆分出来。然后将内容拆分为法语/英语。

将所有值放在您想要的位置,例如:

var items = new Dictionary<Language, Dictionary<string, string>>();
items.Add(Language.English, new Dictionary<string, string>() );
items.Add(Language.French, new Dictionary<string, string>() );

var input = "ID_PLAYER_1==>Joueur 1---Player 1";

// parts[0] = ID ; parts[1] = Content
var parts = input.Split(new string[] { "==>" }, StringSplitOptions.None);

// values[0] = french ; values[1] = english
var values = parts[1].Split(new string[] { "---" }, StringSplitOptions.None);

var key = parts[0]; // ID
var french = values[0];
var english = values[1];

// put them in the Dictionary
items[Language.English].Add(key, english);
items[Language.French].Add(key, french);

【讨论】:

  • 您必须先创建一个空字典。然后向其中添加一个空的英语词典和一个空的法语词典。那么你就只需要dictionaries[Language.English].Add(key, english)dictionaries[Language.French].Add(key, french) 就可以了。换句话说,你希望每个键都有一个新字典。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-08
  • 2016-04-14
  • 2014-04-19
  • 2012-01-25
  • 2016-10-14
相关资源
最近更新 更多