C# 拆分字符串方法 separator.length > 1 解释代码

C# Split String Method separator.length > 1 explain code

提问人:Mohammad Ahmad 提问时间:6/28/2023 最后编辑:marc_sMohammad Ahmad 更新时间:6/28/2023 访问量:58

问:

我的文件中有这样的数据:

AccountNumber#//#PinrCode#//#name#//#PhoneNumber#//#AccountBalance

我正在使用 C# 拆分分隔符,它拆分我从文件中获取的字符串,但是客户端对象中的数据,当我有一个 ,一切都很好,但是当我有时,我遇到了问题。我是这样解决的,但我并不真正理解我写的代码,而且我几乎没有问题separator.length = 1separator.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 } 

男孩

另一个参数是什么?

C# 数组 .NET 字符串 文件

评论

2赞 Panagiotis Kanavos 6/28/2023
solve the problem实际问题是什么? 工程。您可以在方法文档中找到每个参数的作用? 具有接受多个分隔符的重载,并且可以从结果中消除空字符串String.SplitString.Split
0赞 Panagiotis Kanavos 6/28/2023
你试过吗?这将返回一个由 5 个字符串组成的数组var lines=Line.Split("#//#");
0赞 jmcilhinney 6/28/2023
您可能只关注 Intellisense,甚至不必阅读文档。 是超载的,这是超载之一。关于创建数组,您到底有什么不明白的地方?String.Splitstring

答:

0赞 shingo 6/28/2023 #1

我猜你还在使用 .Net Framework。

如果分隔符只包含 1 个字符,则可以将分隔符直接传递给方法。这是因为方法组具有以下重载SplitLine.Split('#')Split

public string[] Split (params char[] separator);

但是,如果分隔符包含多个字符,则分隔符必须是一个对象。不幸的是,在 .Net Framework 下,接受 or 参数的方法组之间没有重载,只接受类型,这就是为什么你必须构造一个字符串数组:。stringSplitstringparams string[]string[]Line.Split(new string[] { Separator })

今天,在 .Net Core 中,添加了一个新的重载方法,无需再创建数组。

评论

0赞 Ben Voigt 6/28/2023
传递单个字符串会带来混淆 - 任何阅读代码的人都会怀疑它是否被视为一个多字符分隔符,或者持有一堆替代的单字符分隔符。也许在新的重载“在野外”足够长的时间之后,程序员就会记住正确的解释。IEnumerable<char>
0赞 shingo 6/29/2023
难怪 .Net 最初没有一个字符串,但对我来说,每次都分配一个数组比混乱更难以忍受。