Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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#_.net_String_Split - Fatal编程技术网

C# 只有第一次出现

C# 只有第一次出现,c#,.net,string,split,C#,.net,String,Split,我有这个字符串MIL\u A\u OP=LI\u和=SSB12=JL45==DO=90==IT=KR002112 我需要根据第一个“=”将其拆分为2个 所以我需要它来获得: 第一个字符串:MIL\u A\u OP 第二个字符串:LI_和=SSB12=JL45==DO=90==IT 下面的代码就是我所拥有的,但它给了我MIL_A_OP和LI_,我想念其余的代码 try { StreamReader file1 = new StreamReader(args[0]); string

我有这个字符串
MIL\u A\u OP=LI\u和=SSB12=JL45==DO=90==IT=KR002112
我需要根据第一个“=”将其拆分为2个

所以我需要它来获得:

第一个字符串:
MIL\u A\u OP

第二个字符串:
LI_和=SSB12=JL45==DO=90==IT

下面的代码就是我所拥有的,但它给了我MIL_A_OP和LI_,我想念其余的代码

try
{
    StreamReader file1 = new StreamReader(args[0]);
    string line1;
    while ((line1 = file1.ReadLine()) != null)
    {
        if (line1 != null && line1.Trim().Length > 0)//if line is not empty
        {
            int position_1 = line1.IndexOf('=');
            string s_position_1 = line1.Substring(position_1, 1);
            char[] c_position_1 = s_position_1.ToCharArray(0,1);
            string[] line_split1 = line1.Split(c_position_1[0]);
            Foo.f1.Add(line_split1[0], line_split1[1]);
        }
    }
    file1.Close();
}
catch (Exception e)
{
    Console.WriteLine("File " + args[0] + " could not be read");
    Console.WriteLine(e.Message);
}

您需要Split()方法的重载,该方法允许您指定要返回的最大元素数。试试这个:

string[] line_split1 = line1.Split( new char[]{'='}, 2 );


使用Matthew的反馈更新。

您需要Split()方法的重载,该方法允许您指定要返回的最大元素数。试试这个:

string[] line_split1 = line1.Split( new char[]{'='}, 2 );

更新了Matthew的反馈。

尝试以下方法

string all = "MIL_A_OP=LI_AND=SSB12=JL45==DO=90==IT=KR002112";
int index = all.IndexOf('=');
if (index < 0) {
  throw new Exception("Bad data");
}
var first = all.Substring(0, index);
var second = all.Substring(index + 1, all.Length - (index + 1));
string all=“MIL\u A\u OP=LI\u AND=SSB12=JL45==DO=90==IT=KR002112”;
int index=all.IndexOf('=');
如果(指数<0){
抛出新异常(“坏数据”);
}
var first=所有子字符串(0,索引);
var second=所有子字符串(索引+1,所有长度-(索引+1));
尝试以下操作

string all = "MIL_A_OP=LI_AND=SSB12=JL45==DO=90==IT=KR002112";
int index = all.IndexOf('=');
if (index < 0) {
  throw new Exception("Bad data");
}
var first = all.Substring(0, index);
var second = all.Substring(index + 1, all.Length - (index + 1));
string all=“MIL\u A\u OP=LI\u AND=SSB12=JL45==DO=90==IT=KR002112”;
int index=all.IndexOf('=');
如果(指数<0){
抛出新异常(“坏数据”);
}
var first=所有子字符串(0,索引);
var second=所有子字符串(索引+1,所有长度-(索引+1));

如果您的行始终包含=char,那么下面的操作应该有效

string[] line_split1 = line.Split( new char[] {'='} , 2);

if (line_split1.Length != 2)
    throw new Exception ("Invalid format");

如果您的行始终包含=char,那么下面的代码应该可以使用

string[] line_split1 = line.Split( new char[] {'='} , 2);

if (line_split1.Length != 2)
    throw new Exception ("Invalid format");

您的第二个
拆分
只需要是
子字符串
。您的第二个
拆分
只需要是
子字符串
第1行。拆分(新字符[]{'=},2)可能会更简洁一些。但是为什么我得到“string.Split(params char[])的最佳重载方法匹配有一些无效参数。参数2:无法从int转换为char@JohnRyann该示例有一个问题(
Split
需要一个数组,但该示例使用标量值)。请参阅我的注释。
line1.Split(新字符[]{'='},2)
可能会更简洁一些。但是为什么我得到“string.Split(params char[])的最佳重载方法匹配有一些无效参数。参数2:无法从int转换为char@JohnRyann该示例有一个问题(
Split
需要一个数组,但该示例使用标量值)。见我的评论。