我正在制作一个具有角色属性的游戏,比如力量,敏捷等等。我把它们都放在<string, double>
词典中。我需要对来自设备,增益等的属性实现“mods”。我想通过查找/替换将"CurrentStats[Key]"
的所有实例替换为某种类型的function(string input)
。 (我有几百个参考资料,我不能手工完成)
所以基本上,我正在寻找一种方法来编写一个我可以以某种方式编写的函数
Function("Strength") = 5;
的任务
虽然仍然可以使用
if(Function("Strength") == 5)
取物。
这可能吗?
Visual Studio在其搜索和替换中内置了正则表达式。您只需要在进行替换时启用该选项。
您可以只执行全局搜索并将CurrentStats\[([^\]]+)\]
替换为MyFunction($1)
。
说明:这将搜索文字字符串CurrentStats[]
,两个括号之间的内容是一个组(在替换中引用为$1
),由(
和)
包围,包含[^\]]+
,或“,任何字符组这不是关闭报价]
,重复一次或多次“。
请注意,如果密钥本身可能包含myArray[i]
之类的东西,那么这将无效。从那以后它显然会匹配那个的结束括号。正则表达式并不擅长匹配括号或标签。
locigcal方法是为你的角色设一个班级。您可以使用属性。如果要分配某些内容,通常会使用参数调用函数,但可以直接分配属性。
public class Character {
private bool overpowered = false;
private int _strength = 0;
public int Strength
{
get { return this._strength; }
set {
if (value > 10) { overpowered = true; }
this._strength = value;
}
}
// [...]
}
然后使用该属性通过对象简单访问它:
Character c = new Character();
c.Strength = 5;
if (c.Strength == 5) { /* ... */ }
使用字典在这里没什么意义。
看起来ref返回是我追求的。我不知道如何将其标记为已回答。首先发布在这里。感谢大家