Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用一行区分不同的值。Contains()_C#_String_Split_Streamreader - Fatal编程技术网

C# 用一行区分不同的值。Contains()

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=

我很好奇,我正在为我玩的一个老游戏编写一个实用程序,这允许定制NPC。长话短说,我正在为这些定制NPC文件编写一个阅读器。我已经用line.contains()方法阅读了大部分内容(所有代码将在后面显示),但有一个问题。该文件可以只包含“height”或“gfxheight”,两者的作用不同。使用line.contains(“width”)将使其同时输出width和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

这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点。哈哈,这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点。哈哈,这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点。哈哈,这很有趣。我也会尝试一下;非常感谢。可能也比我的方法快一点..哈哈