将数组传递给函数(并使用函数拆分数组)
本文关键字:数组 函数 拆分 | 更新日期: 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
方法来获得分隔项的数组,然后将它们插入您希望的格式。
当然,这意味着您必须对分隔字符串的每个部分的含义有某种显式的了解。