正在使用系统.环境.换行符和独立于文化.ToString() 用于解析会给我带来问题



我之前做过几个项目,我使用 System.Environment.Newline 作为我后来解析的保存文件的分隔符。

所有这些时候,它都是在一个我所知道的仅限Windows的环境中 - 我正在为我正在开发的一款游戏制作一个,它也将发布到mac和linux。在多平台上保存和解析这些会是一个问题吗?我正在解析 并捕获 \r。

我也使用.ToString() 用于没有文化规范的 int 转换 - 这会在 ints 中带回问题吗?我假设它会使用浮点数,因为它可能是 35.5 或 35,5,但解析任何一个都应该在系统中带回 35.5。

如果您正在处理多个操作系统,那么简短的回答是肯定的。但修复起来也很简单。

对于行尾,您可以使用正则表达式(或普通 ol' string.Replace)规范化 EOL,这样当rn时,就会变成n,而rn会变成正n。或者更简单地说:根本不使用Environment.NewLine,只是标准化n,这可能是最好的选择。

如果希望ToString调用(以及任何后续int.Parse调用)忽略区域性,请尽可能使用CultureInfo.InvariantCulture。它将解决您可能遇到的任何和所有(反)序列化问题。

最新更新