public string OpenDialogueFile(string dialogueName) {
if(dialogues == null) {
dialogues = Resources.LoadAll<TextAsset>("Dialogue");
}
var text = "";
foreach(var ta in dialogues) {
print(ta.name + ".." + dialogueName);
if(ta.name == dialogueName) {
print("Found");
text = ta.text;
break;
}
}
return text;
}
此代码应找到一个包含所请求名称的纯文本文件并吐出内容。
使用Resources/Dialogue
中的文件“test1 and test2”并请求test1,输出为
test1..test1
Found
当请求test2时,
test1..test2
test2..test2
该程序声称test2不等于test2。
ta.name和dialogueName都是字符串,因此它应该按内容测试相等。
我的平等操作有问题吗?
答案 0 :(得分:3)
在比较之前尝试从空格中清除字符串
var cleanDialogueName = dialogueName.Trim();
foreach(var ta in dialogues)
{
var cleanName = ta.name.Trim();
print(cleanName + ".." + cleanDialogueName);
if (cleanName == cleanDialogueName)
{
print("Found");
text = ta.text;
break;
}
}
答案 1 :(得分:1)
你是对的,“test2”应该等于“test2”。使用string.ToCharArray()方法将字符串转换为char数组以检测问题。检查字符数及其值。也许这是一个编码问题。
答案 2 :(得分:0)
建议不要使用==运算符,而是使用String类的.equals
方法来比较字符串是否相等。
如需更多信息,请参阅the msdn documentation或this stackoverflow post
使用.equals代替==可以解决您的问题,而无需诉诸疯狂的黑客解决方法