如何使用C#或LINQ在数组中追加字符串
我有一个字符串如何使用C#或LINQ在数组中追加字符串,c#,arrays,string,linq,C#,Arrays,String,Linq,我有一个字符串SelectedPath,它与/字符组合在一起。我使用/字符分割字符串,并将其存储在字符串数组中,如下所述 string SelectedPath = "Users/Shangai/China/server"; string[] OUs = SelectedPath.Split('/').Reverse().ToArray(); string container = ""; for(int i=0; i<OUs.Length;i++) {
SelectedPath
,它与/
字符组合在一起。我使用/
字符分割字符串,并将其存储在字符串数组中,如下所述
string SelectedPath = "Users/Shangai/China/server";
string[] OUs = SelectedPath.Split('/').Reverse().ToArray();
string container = "";
for(int i=0; i<OUs.Length;i++)
{
container +="OU="+OUs[i].ToString()+",";
}
我希望上面的容器
值采用下面提到的格式
container="OU=Users,OU=Newyork,OU=Americas,DC=server"
注意:最后一个数组值必须添加前缀DC=
而不是OU=
如何以上述格式追加此字符串。如果我们能和LINQ一起做到这一点,我们真的很感激。请给我一些建议来达到这个目的。也有可能通过LINQ或Lambda表达式实现这一点吗?如果是,请给我同样的建议。使用
更改
的循环,如下所示:
for(int i=0; i < OUs.Length - 1; i++)
{
container += string.Format("OU= {0},", OUs[i]);
}
container += string.Format("DC= {0}", OUs[OUs.Length - 1]);
for(int i=0;i
只需迭代到最后一项。然后在循环后附加DC=
前缀。我更喜欢这种情况下最简单的解决方案,而不是无缘无故地多次创建不必要的枚举数,在真正有用和必要时使用LINQ
,否则,使用简单循环不会丢失任何内容。要获得列表的第一部分,您需要执行以下操作:
var firstPart = ous.Take(ous.Count - 1);
最后一个元素是
var lastElement = ous.Last();
因此,预先编写“OU=“
非常简单:
var firstPartPrepended = firstPart.Select(x => "OU=" + x);
最后
var complete = String.Join("," firstPartPrepended) + ",DC=" + lastElement;
您可以使用Take
和Last
获取除最后一项以外的所有项目,然后添加最后一项<代码>字符串。Join
然后可以将数组转换为具有所需分隔符的字符串。我没有在这里检查length>=2
,但如果需要,您可以处理它
string container = string.Format(
"OU={0},DC={1}",
string.Join(",OU=", OUs.Take(OUs.Count() - 1)),
OUs.Last());
另一种方式:
string SelectedPath = "Users/Shangai/China/server ";
string[] OUs = SelectedPath.Split('/');
string container = string.Join(",", OUs.Select((s, i) => (i == OUs.Length - 1 ? "DC=" : "OU=") + s));
UselectedNodePath
的值是多少?如果未在任何地方使用,为什么要在代码中选择路径?我已经编辑了代码。它只是选择的路径。@elgonzo,为什么???这将更改输出,我认为不需要这样做。@Downvoter,请您指出回答中的错误,好吗?我不是Downvoter,但您的示例代码仍然缺少第一个“OU=”(string.Join只是将“OU=”放在元素之间,但不放在第一个元素前面)。
string container = string.Format(
"OU={0},DC={1}",
string.Join(",OU=", OUs.Take(OUs.Count() - 1)),
OUs.Last());
string SelectedPath = "Users/Shangai/China/server ";
string[] OUs = SelectedPath.Split('/');
string container = string.Join(",", OUs.Select((s, i) => (i == OUs.Length - 1 ? "DC=" : "OU=") + s));