【发布时间】:2021-09-04 13:05:57
【问题描述】:
我有一个枚举,其中项目被有意义地排序:
enum MyEnum
{
LORRY,
BIKE,
AMBULANCE,
CAR
};
然后我有一些字符串,例如:
"1 CAR AND A LORRY"
"1 LORRY AND A BIKE"
"1 AMBULANCE AND A BIKE"
"1 LORRY AND A AMBULANCE"
按字母顺序对这些字符串进行排序会产生:
"1 AMBULANCE AND A BIKE"
"1 CAR AND A LORRY"
"1 LORRY AND A AMBULANCE"
"1 LORRY AND A BIKE"
但我希望根据我的枚举的顺序对字符串进行排序。所以我的结果应该是:
"1 LORRY AND A BIKE"
"1 LORRY AND A AMBULANCE"
"1 AMBULANCE AND A BIKE"
"1 CAR AND A LORRY"
我想我可以用枚举索引替换字符串中每次出现的枚举值,并使用 string.Compare() 中的新字符串来实现正确的排序。问题是,如何用索引替换字符串来实现:
"1 0 AND A 1"
"1 0 AND A 2"
"1 2 AND A 1"
"1 3 AND A 0"
即
public int Compare(object x, object y)
{
TreeNode tx = x as TreeNode;
TreeNode ty = y as TreeNode;
string s1 = tx.Text;
string s2 = tx.Text;
// What Goes here to replace the enum values in the strings with the enum index?
// I tried this but the replace seems not to work
MyEnum[] myEnums= Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().ToArray();
for (int i = positions.Length - 1; i >= 0; i--)
{
MyEnum myEnum = myEnums[i];
string str = myEnum.ToString();
string index = ((int)myEnum).ToString();
s1.Replace(str, index);
s2.Replace(str, index);
}
return string.Compare(s1, s2);
}
【问题讨论】:
-
你看过
string.Replace()和enum.ToString()和string.Contains()吗??? -
我尝试过但无法正常工作,因此请求帮助。请参阅上面的更新。谢谢
-
再看;
Replace()返回一个新字符串,它不会修改调用字符串。 -
我觉得自己很笨。谢谢