C#如何将TXT读取的字符串转为float用于RageMP坐标参数
问题排查与修复方案
核心问题1:区域文化适配错误
C#默认float.Parse方法会读取当前系统的区域设置解析数值,如果你的系统默认小数点分隔符不是.,会把坐标中的.识别为无效字符,直接抛出格式解析异常。
核心问题2:容错处理缺失
如果TXT文件存在空行、行首尾有空白字符、行格式不符合要求的情况,会直接触发数组越界、格式错误等异常。
修正后可用代码
using System.IO; using System.Globalization; // 固定使用英文区域规则解析,保证小数点识别正常 CultureInfo enCulture = CultureInfo.GetCultureInfo("en-US"); foreach (string line in File.ReadLines(@"/RAGEMP/server-files/blips/hospital/hospitalcords.txt")) { // 跳过空行 if(string.IsNullOrWhiteSpace(line)) continue; string[] split = line.Split(','); // 校验拆分后正好有3个坐标值,过滤格式错误的行 if(split.Length != 3) continue; // 每个值先去除前后空白字符,再按固定规则解析 float x = float.Parse(split[0].Trim(), enCulture); float y = float.Parse(split[1].Trim(), enCulture); float z = float.Parse(split[2].Trim(), enCulture); Blip Hospital = NAPI.Blip.CreateBlip(153, new Vector3(x, y, z), 0.5f, 1, "Hospital"); NAPI.Blip.SetBlipShortRange(Hospital, true); }
额外校验项
- 确认TXT文件编码为UTF-8,避免不可见乱码导致解析失败
- 确认文件路径和服务器启动的工作目录匹配,避免找不到文件的异常
内容的提问来源于stack exchange,提问作者Nintenz0
相关产品推荐
相关产品推荐

