将数组传递给函数(并使用函数拆分数组)

时间:2011-05-01 17:02:30

标签: c# arrays foreach split

我想传递一个字符串数组(用逗号分隔),然后用一个函数用逗号分隔传递的数组,并用分隔符代替逗号。

我会用一些破碎的代码向你展示我的意思:

String FirstData = "1";
String SecondData = "2" ;
String ThirdData = "3" ;
String FourthData = null;

FourthData = AddDelimiter(FirstData,SecondData,ThirdData);

public String AddDelimiter(String[] sData)        
{
    // foreach ","
    String OriginalData = null;

    // So, here ... I want to somehow split 'sData' by a ",". 
    // I know I can use the split function - which I'm having 
    // some trouble with - but I also believe there is some way
    // to use the 'foreach' function? I wish i could put together 
    // some more code here but I'm a VB6 guy, and the syntax here 
    // is killing me. Errors everywhere.

    return OriginalData;

}

5 个答案:

答案 0 :(得分:2)

语法在这里并不重要,您需要了解基类库。此外,您希望显然加入字符串,而不是将其拆分:

var s = string.Join(",", arrayOFStrings);

此外,如果要将n字符串传递给类似的方法,则需要params关键字:

public string Join( params string[] data) {
  return string.Join(",", data);
}

答案 1 :(得分:1)

分裂:

string[] splitString = sData.Split(new char[] {','});

要加入新的分隔符,请将字符串数组传递给String.Join

string colonString = String.Join(":", splitString);

我认为您最好使用Replace,因为您只需要将一个分隔符替换为另一个分隔符:

string differentDelimiter = sData.Replace(",", ":");

答案 2 :(得分:0)

Split函数的一个版本需要一个字符数组。这是一个例子:

   string splitstuff = string.Split(sData[0],new char [] {','});

答案 3 :(得分:0)

如果您不需要对两者之间的部件进行任何处理,只需更换分隔符,您可以使用Replace method on the String class轻松完成:

string newlyDelimited = oldString.Replace(',', ':');

对于大字符串,这将为您提供更好的性能,因为您不必完全通过字符串将其拆分,然后通过这些部分将它们重新连接在一起。

但是,如果您需要处理各个部分(将它们重新组合成另一个不像分隔符的简单替换的形式),那么您将使用Split method on the String class来获取分隔的数组项目,然后将其插入您希望的格式。

当然,这意味着您必须对分隔字符串的每个部分的含义有一些明确的知识。

答案 4 :(得分:0)

如果您有多个对象并且想要将它们放在一个数组中,您可以写:

string[] allData = new string[] { FirstData, SecondData, ThirdData };

然后你可以简单地将它交给函数:

FourthData = AddDelimiter(allData);

C#有一个很好的技巧,如果你在函数定义中添加一个params关键字,你就可以将它视为具有任意数量参数的函数:

public String AddDelimiter(params String[] sData) { … }
…
FourthData = AddDelimiter(FirstData, SecondData, ThirdData);

至于实际实施,最简单的方法是使用string.Join()

public String AddDelimiter(String[] sData)        
{
    // you can use any other string instead of ":"
    return string.Join(":", sData); 
}

但是如果你想自己构建结果(例如,如果你想学习如何去做),你可以使用字符串连接(oneString + anotherString),甚至更好,使用{{3} }:

public String AddDelimiter(String[] sData)        
{
    StringBuilder result = new StringBuilder();
    bool first = true;

    foreach (string s in sData)
    {
        if (!first)
            result.Append(':');
        result.Append(s);
        first = false;
    }

    return result.ToString();
}