Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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#检查拆分字符串的一个计数,如果正确,则打印另一个计数_C# - Fatal编程技术网

C#检查拆分字符串的一个计数,如果正确,则打印另一个计数

C#检查拆分字符串的一个计数,如果正确,则打印另一个计数,c#,C#,因此,我目前正在开发一个程序,它将一个大的txt文件作为字符串逐行读取。对于文件的特定部分,格式如下: text1:text2:text3:text4:text5:text6 我知道如何分割字符串并找到不同的计数 我要做的是检查text5中的文本是否以某个表达式排序开始,然后为该行打印text3 foreach (string str in File.ReadLines(@"/filelocation")) { if (str.StartsWith("fusedef")) {

因此,我目前正在开发一个程序,它将一个大的
txt
文件作为字符串逐行读取。对于文件的特定部分,格式如下:

text1:text2:text3:text4:text5:text6

我知道如何分割字符串并找到不同的计数

我要做的是检查text5中的文本是否以某个表达式排序开始,然后为该行打印text3

foreach (string str in File.ReadLines(@"/filelocation"))
{
    if (str.StartsWith("fusedef"))
    {
        string text3 = str.Split(':')[2];
        string text5 = str.Split(':')[4];

    if (text5.StartsWith("SORT_"))
    {
        Console.WriteLine(text3);
    }
}

(据我所知,对分割字符串的计数从0开始,但如果我错了,请纠正我,这是几周前才开始的。谢谢!)

您需要删除任何可能会混淆起始字符的字符。特别是字符串开始之前的空白

string.Split重载,允许您设置多个要拆分的字符,然后删除此拆分返回的空字符串

string[] blocks = str.Split(new char[] {':', ' '}, StringSplitOptions.RemoveEmptyEntries);

if (blocks[4].StartsWith("SORT_"))
{
    Console.WriteLine(blocks[2]);
}
或者,您可以修剪块字符串

string[] blocks = str.Split(':');

if (blocks[4].Trim().StartsWith("SORT_"))
{
    Console.WriteLine(blocks[2]);
}

拆分字符串将输出一个字符串数组。要真正使用C#并使事情变得多么简单,为什么不尝试使用列表对字符串进行操作

如果知道项目的显示顺序,您可以从列表中的任何位置调用字符串

    foreach (string str in File.ReadLines(@"/filelocation")) {
        if (str.StartsWith("fusedef")) {
            List<string> list = str.Split(':').ToList();
             if (list[5].StartsWith("SORT_")) 
                Console.WriteLine(list[3]);
        }
     }
foreach(File.ReadLines(@)/filelocation)中的字符串str){
如果(str.StartsWith(“fusedef”)){
List=str.Split(“:”).ToList();
if(列表[5].StartsWith(“排序”))
Console.WriteLine(列表[3]);
}
}
希望这有帮助


编辑:您可能希望从分隔符中删除前导空格和尾随空格。或者使用“:”而不是“:”分割字符串。

如果字符串的格式为“text 1:text 2:text 3:text 4”,则分割的字符串都将以空格开头,因此您可能希望删除这些字符串。您也不需要多次调用split。您在哪里打印计数?确切的问题是什么?你被困在哪里?请清楚,并给出一些“fusedef”行的示例。请看。每个字符串中的文本不是字面意义上的text1、text2等,它是工作敏感的,所以我不能在这里发布。谢谢你的建议,不过我会记住它们,以备将来@Stuart。没有打印计数,只是想确保我正确计数@SkintkingleThanks一百万!这就解决了我的问题@Steve