gpt4 book ai didi

C# - 寻找一种简单的方法来解析两种不同表示形式(数字和英文)之间的字符串值

转载 作者:行者123 更新时间:2023-11-30 12:20:58 25 4
gpt4 key购买 nike

我目前正在为某事开发一个小的辅助应用程序,想知道是否有更好的方法来完成这件事 -

我有一个 CSV 文件,我正在将其读入我的程序,我正在将每行中的一个值从数值(始终是一个整数,介于 1 和 5 之间)解析为字符串值,以便在程序。当我保存文件时,我需要将字符串表示形式返回转换为数字表示形式。目前,我正在通过 switch 语句执行此操作,但我知道必须有一种更简洁的方法来完成此操作。

我目前使用的函数有两个参数。其中一个参数是一个字符串,它可以是我要解析的那个值的数字表示 的字符串表示,另一个值是一个 bool 值,它告诉函数它应该以哪种方式转换第一个参数。如果 bool 参数为真,则转换为数字表示,如果为假,则转换为字符串表示。这是我解析值的函数:

string ParseRarity(string rarity, bool toNumericalStr)
{
if (toNumericalStr)
{
switch (rarity)
{
case "Very Common":
return "1";
case "Common":
return "2";
case "Standard":
return "3";
case "Rare":
return "4";
case "Very Rare":
return "5";
}
}
else
{
switch (rarity)
{
case "1":
return "Very Common";
case "2":
return "Common";
case "3":
return "Standard";
case "4":
return "Rare";
case "5":
return "Very Rare";
}
}

return "";
}

如果您能帮助缩短此代码,我们将不胜感激,因此提前说声“谢谢”!

最佳答案

我也会抛出一个答案,你可以创建一个包含稀有度值的静态“存储库”类。下划线存储机制是 Dictionary<int, string> .这将强制您所有的稀有元素都有一个唯一的 key (int),并且通过该 key 可以快速访问。

public static class RarityRepository
{
private static Dictionary<int, string> _values = new Dictionary<int, string>()
{
{ 1, "Very Common" },
{ 2, "Common" },
{ 3, "Standard" },
{ 4, "Rare" },
{ 5, "Very Rare" },
};

public static string GetStringValue(int input)
{
string output = string.Empty; // returns empty string if no matches are found
_values.TryGetValue(input, out output);
return output;
}

public static int GetIntValue(string input)
{
var result = _values.FirstOrDefault(x => string.Compare(x.Value, input, true) == 0);
if (result.Equals(default(KeyValuePair<int,string>)))
{
return -1; // returns -1 if no matches are found
}
return result.Key;
}
}

我做了一个 fiddle here ,感谢@Ron 发现了我的午夜大脑代码缺陷!

关于C# - 寻找一种简单的方法来解析两种不同表示形式(数字和英文)之间的字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49080360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com