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

本文关键字:数组 函数 拆分 | 更新日期: 2023-09-27 17:54:37

我想传递一个字符串数组(以逗号分隔),然后使用一个函数用逗号分隔传递的数组,并在逗号的位置添加一个分隔符。

我将用一些破碎的代码更详细地向您展示我的意思:

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

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

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

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

同样,如果你想传递一个字符串给这样的方法,你需要params关键字:

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

分割:

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

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

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

我认为你最好使用Replace,因为你想做的就是用另一个分隔符替换一个分隔符:

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

如果你有几个对象,你想把它们放在一个数组中,你可以这样写:

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),或者使用StringBuilder:

更好。
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();
}

Split函数的一个版本接受一个字符数组。下面是一个例子:

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

如果您不需要对中间的部分执行任何处理,而只需要替换分隔符,则可以使用String类上的Replace方法轻松地完成此操作:

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

对于大字符串,这将为您提供更好的性能,因为您不需要对字符串进行完整的传递以将其分解,然后再对部分进行传递以将它们重新连接在一起。

但是,如果您需要处理各个部分(将它们重新组合成另一种形式,而不是简单地替换分隔符),那么您将使用String类上的Split方法来获得分隔项的数组,然后将它们插入您希望的格式。

当然,这意味着您必须对分隔字符串的每个部分的含义有某种显式的了解。