C# 从文本文件读取和解析
我尝试从一个txt文件中获取每行的位置,然后将它们提供给生成的树。我在这方面提供帮助:从保存文件加载坐标 我希望以这样的方式列出,每行中的3位数字都是多个整数z.b int1=第一个数字,int2=第二个数字,int3=三个数字 我的txt文件如下所示:C# 从文本文件读取和解析,c#,file,unity3d,loading,txt,C#,File,Unity3d,Loading,Txt,我尝试从一个txt文件中获取每行的位置,然后将它们提供给生成的树。我在这方面提供帮助:从保存文件加载坐标 我希望以这样的方式列出,每行中的3位数字都是多个整数z.b int1=第一个数字,int2=第二个数字,int3=三个数字 我的txt文件如下所示: -32,68481 1,5 -24,33997; 11,65891 1,5 29,67229; 33,34601 1,5 26,94939; 使用系统集合; 使用System.Collections.Generic; 使用UnityEngi
-32,68481 1,5 -24,33997;
11,65891 1,5 29,67229;
33,34601 1,5 26,94939;
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用System.IO;
公共类储蓄系统:单一行为
{
//从保存文件加载坐标
public void LoadSaveData()
{
string[]data=SaveBaumText.text.Split(新字符[]{'\n'});
for(int i=0;i
基于使用StreamReader逐行读取以最小化内存使用
private void LoadSaveData()
{
string fileName = @"c:\test.txt";
const int BufferSize = 128;
using (var fileStream = File.OpenRead(fileName))
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize))
{
string line;
while ((line = streamReader.ReadLine()) != null)
{
// Process line
string[] numberStrings = line.Split( );
if(numberStrings.Length == 3
&& float.TryParse(numberStrings[0], out float f1)
&& float.TryParse(numberStrings[1], out float f2)
&& float.TryParse(numberStrings[2].TrimEnd(';'), out float f3))
{
// do something with your floats
}
}
}
}
请阅读这篇文章,它概述了如何提出一个好问题。此问题缺少有关您遇到的问题的详细信息。它还包含很多代码,但没有告诉我们在哪里可以找到。最好包含所有相关代码,但仅此而已。谢谢。@Michael Welch现在更好了吗?好吧,如果它专注于正确的代码。让我们从
LoadSaveData
的第一行开始,它在做什么?SaveBaumText是什么数据类型?我假设不管它是什么,它都有一个名为text
的字段,该字段包含文件的内容,所以您要将其拆分为几行?然后,你是循环通过线,但它不清楚你在做什么与他们。您还没有添加关于您遇到了什么问题以及您正在尝试做什么的详细信息。我们坐第一排吧<代码>-3268481,5-2433997代码>要对其执行什么处理?你只想把字符串解析成3个数字?是的,拆分成3个整数。对不起,我不擅长解释。你可以继续拆分,就像你一直在做的那样。在空白处拆分(删除分号后),这将为每行提供3个字符串。然后可以使用Float.Parse
(或Double.Parse
)或TryParse
版本将字符串转换为数字。
private void LoadSaveData()
{
string fileName = @"c:\test.txt";
const int BufferSize = 128;
using (var fileStream = File.OpenRead(fileName))
using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize))
{
string line;
while ((line = streamReader.ReadLine()) != null)
{
// Process line
string[] numberStrings = line.Split( );
if(numberStrings.Length == 3
&& float.TryParse(numberStrings[0], out float f1)
&& float.TryParse(numberStrings[1], out float f2)
&& float.TryParse(numberStrings[2].TrimEnd(';'), out float f3))
{
// do something with your floats
}
}
}
}