C# 如果数组为';s空/空?

C# 如果数组为';s空/空?,c#,C#,我有以下示例字符串: ,something2,something3,,something5 something1,,something3,something4, 我需要将其拉入一个数组,但要为缺少的任何内容插入“None”值。(此字符串的不同部分可能缺失)例如,完成时应为: None,something2,something3,None,something5 something1,None,something3,something4,None “数组”的长度始终为5个值 有人知道我会怎么做吗

我有以下示例字符串:

,something2,something3,,something5
something1,,something3,something4,
我需要将其拉入一个数组,但要为缺少的任何内容插入“None”值。(此字符串的不同部分可能缺失)例如,完成时应为:

None,something2,something3,None,something5
something1,None,something3,something4,None
“数组”的长度始终为5个值

有人知道我会怎么做吗?我可以将字符串拆分为一个数组,但似乎无法更新数组:

s.Split(char(',')) //How do I add the 'None' to the blank array parts?

如果更容易,可以将“None”添加到字符串中,然后将其拆分为一个同样有效的数组。

假设每个项的格式为'something{n}',其中{n}是介于1和5之间的数字

var str = "something1,,something3,something4,";
const int limit = 5;
var a = str.Split(',');

for (var i = 0; i < limit; i++)
{
    if (string.IsNullOrEmpty(a[i]))
    {
        a[i] = "None";
    }
}
var resultStr = string.Join(",", a);
var str=“something1,something3,something4,”; 常数int极限=5; 变量a=str.Split(','); 对于(变量i=0;i假设每个项目的格式为'something{n}',其中{n}是介于1和5之间的数字

var str = "something1,,something3,something4,";
const int limit = 5;
var a = str.Split(',');

for (var i = 0; i < limit; i++)
{
    if (string.IsNullOrEmpty(a[i]))
    {
        a[i] = "None";
    }
}
var resultStr = string.Join(",", a);
var str=“something1,something3,something4,”; 常数int极限=5; 变量a=str.Split(','); 对于(变量i=0;i下面的代码应该可以帮助您获得一个输出数组,该数组包含所需的拆分字符串:

static void Main(string[] args)
{
    var s = ",something2,something3,,something5,something1,,something3,something4,";
    var splittedArray = s.Split(',');
    for (int i = 0; i < splittedArray.Length; i++)
    {
        if (splittedArray[i] == string.Empty)
        {
            splittedArray[i] = "None";
        }
    }
}
static void Main(字符串[]args)
{
var s=“、something 2、something 3、something 5、something 1、something 3、something 4”;
var splittedArray=s.Split(',');
for(int i=0;i
运行上述代码后,您将看到阵列中的所有空部件都已替换为
None
,如下面的快照所示:


下面的代码应该可以帮助您获得一个输出数组,该数组包含所需的拆分字符串:

static void Main(string[] args)
{
    var s = ",something2,something3,,something5,something1,,something3,something4,";
    var splittedArray = s.Split(',');
    for (int i = 0; i < splittedArray.Length; i++)
    {
        if (splittedArray[i] == string.Empty)
        {
            splittedArray[i] = "None";
        }
    }
}
static void Main(字符串[]args)
{
var s=“、something 2、something 3、something 5、something 1、something 3、something 4”;
var splittedArray=s.Split(',');
for(int i=0;i
运行上述代码后,您将看到阵列中的所有空部件都已替换为
None
,如下面的快照所示:

另一方面:

var separators = new []{ "," };
var otherway = "a,b,c,,1,2,,zed";
var values = otherway.Split(separators, StringSplitOptions.None);

// [a,b,c,{null},1,2,{null},zed]

var fixedValues = values.Select( strv => { return String.IsNullOrEmpty(strv) ? "None" : strv; });

// [a,b,c,None,1,2,None,zed]
应该好好工作

另一方面:

var separators = new []{ "," };
var otherway = "a,b,c,,1,2,,zed";
var values = otherway.Split(separators, StringSplitOptions.None);

// [a,b,c,{null},1,2,{null},zed]

var fixedValues = values.Select( strv => { return String.IsNullOrEmpty(strv) ? "None" : strv; });

// [a,b,c,None,1,2,None,zed]

如果处理有效,则以下代码将拆分字符串并将空字符串替换为无:


确保使用System.Linq导入:

以下代码将拆分字符串并将空字符串替换为无:


确保使用System.Linq导入:

这没有使用任何现代LINQ功能问题并不是说它需要LINQ。大多数LINQ方法在内部执行相同的循环逻辑。林克不是魔法。这只是一些优化助手的方法,这是无关紧要的。这个解决方案的可维护性远远低于它所需要的。不可维护吗?这是一个相当令人惊讶的说法,cmon人,这个代码是微不足道的。真的吗?你已经看过上面的代码,你是说这是微不足道的?我的意思是,这可能行得通,但离理想还很远。如果我在代码中遇到这段代码,我会立即进行重构。这没有使用任何现代LINQ功能。问题并不是说它需要LINQ。大多数LINQ方法在内部执行相同的循环逻辑。林克不是魔法。这只是一些优化助手的方法,这是无关紧要的。这个解决方案的可维护性远远低于它所需要的。不可维护吗?这是一个相当令人惊讶的说法,cmon人,这个代码是微不足道的。真的吗?你已经看过上面的代码,你是说这是微不足道的?我的意思是,这可能行得通,但离理想还很远。如果我在代码中遇到这段代码,我会立即进行重构。