将文本拆分为4的数组

时间:2016-09-09 10:39:26

标签: c# .net

我想使用char来分割文本,以便我可以从中创建一个对象。

string s = "Domain_FieldName";
//string s = "Domain_Schema_TableName_FieldName";
//string s = "Domain_Schema_FieldName";

 var x = s.Split(new[] {'_'}, StringSplitOptions.None);

var xx = new Response()
{
  Value = "test",
  DataType = "string",
  Domain = 
  Schema = 
  TableName =
  FieldName = 
};

因此,问题在于要拆分的字符串的长度可能会有所不同。

但我需要拆分字符串,以便它可以映射到响应对象字段。

我需要一种通用的方法来填充响应对象。

举个例子,如果只指定了“Domain_FieldName”,它需要知道在响应上将Domain传递给Domain,而在响应上传递FieldName到FieldName,Schema和TableName应该得到一个空字符串

5 个答案:

答案 0 :(得分:0)

使用C#Split功能

string s = "Domain_Schema_TableName_FieldName";
string[] substring= s.Split('_');

上面的代码将使用分隔符Domain_Schema_TableName_FieldName将字符串_拆分为不同的部分,并将子字符串保存在名为substring的字符串数组中

答案 1 :(得分:0)

在设置变量之前,请尝试检查split数组的长度。 (并设置默认值,如果它太短)

var xx = new Response()
{
  Value = "test";
  DataType = "string";
  Domain = (x.Length >= 1)?x[0]:"";
  Schema = (x.Length >= 2)?x[1]:"";
  TableName = (x.Length >= 3)?x[2]:"";
  FieldName = (x.Length >= 4)?x[3]:"";

};

(另外:s.Split("_")s.Split('_')也可以正常工作)

编辑: 我没有看到,你只想填补最后4个字段。更改了代码

第二次编辑: 我也没有看到字符串顺序可能不同(即示例1与示例3)。在这种情况下,除非您可以指定,如何确定哪个字符串需要进入哪个字段,否则我无法帮助您。

答案 2 :(得分:0)

您可以这样做:

        var x = s.Split(new[] { '_' }, StringSplitOptions.None);

        var xx = new Response
        {
            Value = "test",
            DataType = "string",
            Domain = x.Length > 0 ? x[0] : null,
            Schema = x.Length > 1 ? x[1] : null,
            TableName = x.Length > 2 ? x[2] : null,
            FieldName = x.Length > 3 ? x[3] : null
        };

答案 3 :(得分:0)

试试这个

        string s = "Domain_FieldName";
        var x = s.Split(new[] { '_' }, StringSplitOptions.None);
        var xx = new Response
        {
           Value = "test",
           DataType = "string",
           Domain =x[0],
           Schema ="",
           TableName ="",
           FieldName = x[1]
        };

答案 4 :(得分:0)

从您的示例看,Domain始终是第一个,FieldName始终是最后一个:

string s = "Domain_FieldName";
//string s = "Domain_Schema_TableName_FieldName";
//string s = "Domain_Schema_FieldName";

var x = s.Split('_');

var xx = new Response()
{
  Value = "test",
  DataType = "string",
  Domain = x[0]
  Schema = x.Length > 2 ? x[1] : "";
  TableName = x.Length > 3 ? x[2] : "";
  FieldName = x.Length > 1 ? x.Last() : "";
};