我想使用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应该得到一个空字符串
答案 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() : "";
};