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
方法应该对您有所帮助。afor
与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(',', "-");