将文本分割为4个数组

本文关键字:4个 数组 分割 文本 | 更新日期: 2023-09-27 18:06:24

我想分割文本,使用字符,这样我就可以从它创建一个对象。

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应该得到一个空字符串

将文本分割为4个数组

你可以这样做:

        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
        };

使用c# Split函数

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

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

的字符串数组中

在设置变量之前,尝试检查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个字段。改变代码

编辑2:我也没有看到字符串的顺序可能不同(例如,例1与例3)。在这种情况下,我不能帮助你,除非你可以指定,如何确定哪个字符串需要进入哪个字段。

try this

        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]
        };

从你的例子似乎域名总是第一,和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() : "";
};