C# 用一行区分不同的值。Contains()
我很好奇,我正在为我玩的一个老游戏编写一个实用程序,这允许定制NPC。长话短说,我正在为这些定制NPC文件编写一个阅读器。我已经用line.contains()方法阅读了大部分内容(所有代码将在后面显示),但有一个问题。该文件可以只包含“height”或“gfxheight”,两者的作用不同。使用line.contains(“width”)将使其同时输出width和gfxwidth两次。我真的不知道有什么好的方法来解释它,所以这里是文件:C# 用一行区分不同的值。Contains(),c#,string,split,streamreader,C#,String,Split,Streamreader,我很好奇,我正在为我玩的一个老游戏编写一个实用程序,这允许定制NPC。长话短说,我正在为这些定制NPC文件编写一个阅读器。我已经用line.contains()方法阅读了大部分内容(所有代码将在后面显示),但有一个问题。该文件可以只包含“height”或“gfxheight”,两者的作用不同。使用line.contains(“width”)将使其同时输出width和gfxwidth两次。我真的不知道有什么好的方法来解释它,所以这里是文件: width=32 height=32 gfxwidth=
width=32
height=32
gfxwidth=64
gfxheight=32
nofireball=1
noiceball=1
noyoshi=1
grabside=0
当我读入控制台输出并执行拆分行所需的操作时,控制台输出如下:
下面是我用于身高和GFXHight的代码(当然还有其他代码,但这是我在阅读时遇到的唯一问题):
当然还有宽度和gfxwidth的代码以及其他各种代码,但我不想麻烦发布这些代码,因为我可以将我得到的高度应用于这些代码。
那我该怎么区分它们呢?建议
提前感谢
Mike与其在拆分前试图找出每一行是什么,不如先尝试拆分它。这种解析方法利用了文件的格式,并大大减少了对其数据的依赖性:
与其在拆分前试图弄清楚每一行是什么,不如先尝试拆分它。这种解析方法利用了文件的格式,并大大减少了对其数据的依赖性:
与其在拆分前试图弄清楚每一行是什么,不如先尝试拆分它。这种解析方法利用了文件的格式,并大大减少了对其数据的依赖性:
与其在拆分前试图弄清楚每一行是什么,不如先尝试拆分它。这种解析方法利用了文件的格式,并大大减少了对其数据的依赖性:
事实上,我想出了一个解决办法!请注意:我还没有刷新页面以查看任何建议的答案
if (line.Contains("width"))
{
if (line.Contains("gfx"))
{
var split = line.Split(new char[] { '=' }, 2);
//var val = int.Parse(split.ToString());
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
npcWidth.Value = Decimal.Parse(split[1].ToString());
npcWidth.Enabled = true;
npcWCb.Checked = true;
}
else
{
var split = line.Split(new char[] { '=' }, 2);
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
pNpcWidth.Value = Decimal.Parse(split[1].ToString());
pNpcWidth.Enabled = true;
pNpcWidthCb.Checked = true;
}
}
基本上^
它所做的是检查该行是否与该行的宽度相同。Contains方法。如果是,则检查其中是否包含gfx(如gfxheight、gfxwidth等),如果包含,则为gfxheight或gfxwidth值。如果不是,那就是正常的高度/宽度。我实际上想出了一个解决方案!请注意:我还没有刷新页面以查看任何建议的答案
if (line.Contains("width"))
{
if (line.Contains("gfx"))
{
var split = line.Split(new char[] { '=' }, 2);
//var val = int.Parse(split.ToString());
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
npcWidth.Value = Decimal.Parse(split[1].ToString());
npcWidth.Enabled = true;
npcWCb.Checked = true;
}
else
{
var split = line.Split(new char[] { '=' }, 2);
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
pNpcWidth.Value = Decimal.Parse(split[1].ToString());
pNpcWidth.Enabled = true;
pNpcWidthCb.Checked = true;
}
}
基本上^
它所做的是检查该行是否与该行的宽度相同。Contains方法。如果是,则检查其中是否包含gfx(如gfxheight、gfxwidth等),如果包含,则为gfxheight或gfxwidth值。如果不是,那就是正常的高度/宽度。我实际上想出了一个解决方案!请注意:我还没有刷新页面以查看任何建议的答案
if (line.Contains("width"))
{
if (line.Contains("gfx"))
{
var split = line.Split(new char[] { '=' }, 2);
//var val = int.Parse(split.ToString());
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
npcWidth.Value = Decimal.Parse(split[1].ToString());
npcWidth.Enabled = true;
npcWCb.Checked = true;
}
else
{
var split = line.Split(new char[] { '=' }, 2);
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
pNpcWidth.Value = Decimal.Parse(split[1].ToString());
pNpcWidth.Enabled = true;
pNpcWidthCb.Checked = true;
}
}
基本上^
它所做的是检查该行是否与该行的宽度相同。Contains方法。如果是,则检查其中是否包含gfx(如gfxheight、gfxwidth等),如果包含,则为gfxheight或gfxwidth值。如果不是,那就是正常的高度/宽度。我实际上想出了一个解决方案!请注意:我还没有刷新页面以查看任何建议的答案
if (line.Contains("width"))
{
if (line.Contains("gfx"))
{
var split = line.Split(new char[] { '=' }, 2);
//var val = int.Parse(split.ToString());
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
npcWidth.Value = Decimal.Parse(split[1].ToString());
npcWidth.Enabled = true;
npcWCb.Checked = true;
}
else
{
var split = line.Split(new char[] { '=' }, 2);
Console.WriteLine(split[0].ToString() + " is equal to " + split[1].ToString());
pNpcWidth.Value = Decimal.Parse(split[1].ToString());
pNpcWidth.Enabled = true;
pNpcWidthCb.Checked = true;
}
}
基本上^
它所做的是检查该行是否与该行的宽度相同。Contains方法。如果是,则检查其中是否包含gfx(如gfxheight、gfxwidth等),如果包含,则为gfxheight或gfxwidth值。如果不是,则为常规高度/宽度。将文件读入字符串数组,然后将其解析为字典
var file = File.ReadAllLines(yourFile);
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = s[1] })
.ToDictionary(x => x.Key, x => x.Value);
现在,您可以通过引用密钥访问任何您想要的内容:
var gfxHeight = config["gfxheight"]; // gfxHeight is a string containing "32"
如果您知道
=
后面的值始终是一个数字,您可以解析它:
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = int.Parse(s[1]) })
.ToDictionary(x => x.Key, x => x.Value);
var gfxHeight = config["gfxheight"]; // gfxHeight is an int containing 32
将文件读入字符串数组,然后将其解析到字典中
var file = File.ReadAllLines(yourFile);
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = s[1] })
.ToDictionary(x => x.Key, x => x.Value);
现在,您可以通过引用密钥访问任何您想要的内容:
var gfxHeight = config["gfxheight"]; // gfxHeight is a string containing "32"
如果您知道
=
后面的值始终是一个数字,您可以解析它:
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = int.Parse(s[1]) })
.ToDictionary(x => x.Key, x => x.Value);
var gfxHeight = config["gfxheight"]; // gfxHeight is an int containing 32
将文件读入字符串数组,然后将其解析到字典中
var file = File.ReadAllLines(yourFile);
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = s[1] })
.ToDictionary(x => x.Key, x => x.Value);
现在,您可以通过引用密钥访问任何您想要的内容:
var gfxHeight = config["gfxheight"]; // gfxHeight is a string containing "32"
如果您知道
=
后面的值始终是一个数字,您可以解析它:
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = int.Parse(s[1]) })
.ToDictionary(x => x.Key, x => x.Value);
var gfxHeight = config["gfxheight"]; // gfxHeight is an int containing 32
将文件读入字符串数组,然后将其解析到字典中
var file = File.ReadAllLines(yourFile);
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = s[1] })
.ToDictionary(x => x.Key, x => x.Value);
现在,您可以通过引用密钥访问任何您想要的内容:
var gfxHeight = config["gfxheight"]; // gfxHeight is a string containing "32"
如果您知道
=
后面的值始终是一个数字,您可以解析它:
var config = (from line in file
let s = line.Split('=')
select new { Key = s[0], Value = int.Parse(s[1]) })
.ToDictionary(x => x.Key, x => x.Value);
var gfxHeight = config["gfxheight"]; // gfxHeight is an int containing 32
这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点。哈哈,这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点。哈哈,这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点。哈哈,这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点..哈哈