提问人:Mohammad Ahmad 提问时间:6/28/2023 最后编辑:marc_sMohammad Ahmad 更新时间:6/28/2023 访问量:58
C# 拆分字符串方法 separator.length > 1 解释代码
C# Split String Method separator.length > 1 explain code
问:
我的文件中有这样的数据:
AccountNumber#//#PinrCode#//#name#//#PhoneNumber#//#AccountBalance
我正在使用 C# 拆分分隔符,它拆分我从文件中获取的字符串,但是客户端对象中的数据,当我有一个 ,一切都很好,但是当我有时,我遇到了问题。我是这样解决的,但我并不真正理解我写的代码,而且我几乎没有问题separator.length = 1
separator.length > 1
public void ConvertLineToClient(String Line, String Separator = "#//#")
{
String[] ClientInfo = Line.Split(new string[] { Separator }, StringSplitOptions.None);
this.AccountNumber = ClientInfo[0];
this.PinCode = ClientInfo[1];
this.Name = ClientInfo[2];
this.PhoneNumber = ClientInfo[3];
this.AccountBalance = Convert.ToInt16(ClientInfo[4]);
}
我想了解什么是
new string[] { Separator }
男孩
另一个参数是什么?
答:
0赞
shingo
6/28/2023
#1
我猜你还在使用 .Net Framework。
如果分隔符只包含 1 个字符,则可以将分隔符直接传递给方法。这是因为方法组具有以下重载:Split
Line.Split('#')
Split
public string[] Split (params char[] separator);
但是,如果分隔符包含多个字符,则分隔符必须是一个对象。不幸的是,在 .Net Framework 下,接受 or 参数的方法组之间没有重载,只接受类型,这就是为什么你必须构造一个字符串数组:。string
Split
string
params string[]
string[]
Line.Split(new string[] { Separator })
今天,在 .Net Core 中,添加了一个新的重载方法,无需再创建数组。
评论
0赞
Ben Voigt
6/28/2023
传递单个字符串会带来混淆 - 任何阅读代码的人都会怀疑它是否被视为一个多字符分隔符,或者持有一堆替代的单字符分隔符。也许在新的重载“在野外”足够长的时间之后,程序员就会记住正确的解释。IEnumerable<char>
0赞
shingo
6/29/2023
难怪 .Net 最初没有一个字符串,但对我来说,每次都分配一个数组比混乱更难以忍受。
评论
solve the problem
实际问题是什么? 工程。您可以在方法文档中找到每个参数的作用? 具有接受多个分隔符的重载,并且可以从结果中消除空字符串String.Split
String.Split
var lines=Line.Split("#//#");
String.Split
string