繁体   English   中英

C# 从 .txt 文件中读取字符串

[英]C# Reading a string from a .txt file

my.txt 文件的片段如下所示:

18  Ladders/ladder_trigger (18 triggers) (18 enabled)
17  assets/prefabs/player/player_model.prefab/collision (0 triggers) (1 enabled)
17  assets/prefabs/misc/xmas/poweredlights/xmas.advanced.lights.deployed.prefab
(0 triggers) (17 enabled)

有 +1000 行,它们的顺序总是随机的。 我的问题是我正在尝试获取一个 int,其中包含一行中启用的值的数量,该行始终包含文本assets/prefabs/player/player_model.prefab/collision和 output 它在控制台中。 总是只有 1 行包含assets/prefabs/player/player_model.prefab/collision启用值的数量可能不同,文本文件中的 position 总是不同的。 我试图检查这个特定字符串的整个文本文件,然后尝试从那里弄清楚如何获取该数字,但我不知道如何做到这一点。 这是我的代码的一部分,它工作正常,但仅用于检查文件是否包含该字符串,而不是用于获取之后的数字。

            string[] words = File.ReadAllText(@"C:\Users\azir\Desktop\KelosRPR\Physics.Colliders.Objects.txt").Split(' ');
            string wordtobesearched = "assets/prefabs/player/player_model.prefab/collision";
            bool condition = false;
            for (int i = 0; i < words.Length; i++)
            {
                if (words[i].Contains(wordtobesearched) == true)
                {
                    condition = true;
                    break;
                }
                else
                {
                    condition = false;
                }
            }
            if (condition == true)
            {
                Console.WriteLine("{0} found in data", wordtobesearched);
            }
            else
            {
                Console.WriteLine("{0} not found in data", wordtobesearched);
            }

您可以使用正则表达式来查找enabled的号码。 这是一个例子。

var text = File.ReadAllText(@"C:\Users\azir\Desktop\KelosRPR\Physics.Colliders.Objects.txt");
var wordtobesearched = "assets/prefabs/player/player_model.prefab/collision";
var regex = new Regex($"{wordtobesearched}.*?\\((\\d+) enabled\\)");
var number = int.Parse(regex.Match(text).Groups[1].Value);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM