C# c“如何替换数组字符串”&引用;至-&引用;

C# c“如何替换数组字符串”&引用;至-&引用;,c#,arrays,string,replace,C#,Arrays,String,Replace,我有 并拆分为字符串数组,如下所示: string data = "a,bn,,rf,,"; 如何将“替换为”-“? 还有其他方便的方式吗 感谢您的帮助。您可以使用以下方法投影split方法返回的结果: string []dataArray = data.Split(',',data); and array become {"a", "bn", "", "", "rf", "", ""}; 这将为您提供: {“a”,“bn”,“-”,“-”,“rf”,“-”,“-”,“-”} 如果您只需要非

我有

并拆分为字符串数组,如下所示:

string data = "a,bn,,rf,,";
如何将
替换为
”-“
? 还有其他方便的方式吗


感谢您的帮助。

您可以使用以下方法投影split方法返回的结果:

string []dataArray = data.Split(',',data);
and array become {"a", "bn", "", "", "rf", "", ""};
这将为您提供:

{“a”,“bn”,“-”,“-”,“rf”,“-”,“-”,“-”}

如果您只需要非空字符串,还可以使用以下命令消除这些字符串:

这将为您提供如下结果:

{“a”、“bn”、“rf”}

没有林克

var result = data.Split(new char[] {','},StringSplitOptions.RemoveEmptyEntries);

这里有一个非常简单的方法来处理这个问题

var result = data.Split(',', data).Replace(String.Empty, "-");
for(int i=0;i
如果要在拆分之前处理此问题,可以使用正则表达式替换。(我只是在人们不断给出不正确的字符串替换答案时才将其包括在内)


data=Regex.Replace(data),(?迭代结果,然后检查结果是否为null或空。如果是,则将其替换为-。

如果有机会,通常最好先更改对象的值,然后再将其变为要使用的数据类型

data = Regex.Replace(data, "(?<=^|,)(?=,|$)", "-");
然后,您的数组将按照您希望的方式进行变异,您不必查询该数组或遍历它来修复它


编辑:更新它以调整空白的最后索引和回车。

您可以使用此代码,我希望这将对您有所帮助

    string data = "a,bn,,rf,,";
    string replacementCharacter = "-";
    //if we know we want a hyphen character where a string.Empty would be, do it now.

    data = data.Replace(",,", "," + replacementCharacter + ",").Trim();
    if (data.EndsWith(",")) { data += "-"; }
    if (data.StartsWith(",")) { data = "-" + data; }

这里有一个我之前编写的扩展函数来实现这一点

string data = "a,bn,,rf,,";
string[] dataArray = data.Split(',').Select(c => { c = (c == "") ? "-" : c; return c; }).ToArray();
你可以像这样使用它

public static class Extensions
{
    public static string[] CustomSplit(this string toSplit, char delimiter, string emptyEntities) => 
        toSplit.Split(delimiter).Select(c => c == string.Empty ? emptyEntities : c).ToArray();
}

LINQ
.Select
方法应该对您有所帮助。a
for
if
循环?他们想要
{a”,“bn”,“rf”}
还是
{a”,“bn”,“-”,“-”,“rf”,“-”,“-”}
@MattBeldon第二个答案正是他们想要的。你认为他们想要什么?@juharr我写了那条评论,而答案只有前者,我认为OP想要后者。@MattBeldon的答案总是有生成后者的代码。他们只是添加了结果。是的,Ehsan Sajjad…谢谢,第二个{“a”,“bn”,“-”,“-”,“rf”“,“-”,“-”}是我想要的。谢谢
.Split(“,”,data)
不会编译,
.Split().Replace
也不会编译!是的,必须先检查一下。多失败啊(那是什么
Replace
方法?我猜他想
Split()
返回一个字符串?首先,这应该是一个注释,或者是一个答案(如果您包含了一个与此完全相同的示例)。无需重复答案。为什么不只是
c=>c==“”?“-”:c
?这基本上是Ehsan的答案。我没有检查他的答案。你不需要
string。IsNullOrEmpty
,因为
拆分
在结果数组中永远不会产生
null
值。仅对空部分使用它,只需将其替换为c==string.empty即可
string data = "a,bn,,rf,,";
string[] dataArray = data.Split(',').Select(c => { c = (c == "") ? "-" : c; return c; }).ToArray();
public static class Extensions
{
    public static string[] CustomSplit(this string toSplit, char delimiter, string emptyEntities) => 
        toSplit.Split(delimiter).Select(c => c == string.Empty ? emptyEntities : c).ToArray();
}
var result = "a,bn,,rf,,".CustomSplit(',', "-");