foreach (string line in File.ReadAllLines(openBunkerDialog.FileName))
{
if (line.Contains("crate(") && line.Contains(");"))
{
string x = line.Substring(line.IndexOf("crate("), line.IndexOf(","));
string y = line.Substring(line.IndexOf("crate(") + line.IndexOf(x), line.IndexOf(",") + line.IndexOf(x));
string z = line.Substring(line.IndexOf("crate(") + line.IndexOf(x) + line.IndexOf(y), line.IndexOf(",") + line.IndexOf(x) + line.IndexOf(y));
x = x.Replace("crate(", string.Empty);
y = y.Replace("crate(", string.Empty);
z = z.Replace("crate(", string.Empty);
MessageBox.Show("X: " + x + " Y: " + y + " Z: " + z);
//EntitySpawning.crate(Convert.ToSingle(x), Convert.ToSingle(y), Convert.ToSingle(z), false);
}
else if (line.Contains("entity(") && line.Contains(");"))
{
}
}
我想读取一个文件并从该行中获取信息。 文本文件示例:
crate(23231, 243243, 123324);
crate(45678, 987532, 1234);
etc...
我想获取用户输入的那些x / y / z值但是如何??? 谢谢,如果有人可以提供帮助
答案 0 :(得分:0)
嗯,你很亲密。您要做的是获取crate(
的索引,然后是);
的索引。然后你在这两个索引之间取出子串并在逗号上拆分。你也可以使用正则表达式。
答案 1 :(得分:0)
这是一个可能的实现。使用IndexOf
不带和使用起始索引String.Substring
和String.Split
。最后,您可以使用float.TryParse
安全地解析parantheses中的前三个令牌。
foreach (string line in File.ReadAllLines(openBunkerDialog.FileName))
{
int index = line.IndexOf("crate(");
if (index >= 0)
{
index += "crate(".Length;
int endIndex = line.IndexOf(")", index);
if (endIndex >= 0)
{
string inParentheses = line.Substring(index, endIndex - index);
string[] all = inParentheses.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if(all.Length >= 3)
{
float x, y, z;
float.TryParse(all[0].Trim(), out x);
float.TryParse(all[1].Trim(), out y);
float.TryParse(all[2].Trim(), out z);
}
}
}
}
您也可以使用正则表达式方法,但如果可能,我会使用高效的字符串方法。