所以我试图从文本文档中读取并将所有文本用作一个字符串。
我的文本文档包含以下行:
000 \ N010 \ n000
我用它来读取文件:
StreamReader reader = new StreamReader("map.txt");
string mapString = reader.ReadToEnd();
然后我使用读取线以Monogame生成地图。我遇到了一个问题,这打破了我的游戏。我认为发生的是,读者读到:
000 \ N010 \ n000
作为
000010000
因为它在我设置
时有效string mapString = "000\n010\n000";
有没有人知道解决方案/遇到同样的问题?
答案 0 :(得分:0)
你可以检查你的文件字节是否为字节:
class GetFrom extends AsyncTask <Object,Object,String>{
@Override
protected String doInBackground(Object... strings) {
....
String param = anotherMagicalFunctionThatGivesParamToSend(strings[1]);
for(i = 1; i < websites.length; i++){
new SendTo.execute(websites[i],param);
}
}
}
结果(在正确的文件上):
var test = File.ReadAllBytes("map.txt");
if (test.All(b => char.IsNumber((char)b))) throw new Exception("only numbers found!");
if (!test.Any(b => b == '\n')) throw new Exception("no linebrakes found!");
Console.WriteLine("--- char stats ---");
Console.WriteLine();
Console.WriteLine(string.Join("\r\n", test.GroupBy(c => c).OrderBy(g=>-g.Count()).Select(g => (g.Key < ' ' ? "0x" + g.Key.ToString("x").PadLeft(2,'0') : " " + (char)g.Key) + " - count: " + g.Count())));
0x0a是十六进制编码的'\ n'
答案 1 :(得分:-1)
感谢评论中的提示,我在轨道上添加了断点,以便在文件设置后检查mapString。
它给了我这个字符串:
mapString = "000\\n010\\n010";
因此,由于某种原因,它在每个“\ n”之前添加了一个额外的“\”。
为了解决这个问题,我使用了一些hacky修复程序并使用了:
String.Replace("\\n", "\n");
感谢您让我走上正轨。