从字符串中提取子字符串,直到找到逗号

ali*_*ina 15 c# asp.net string

我正在构建一个页面,并想知道如何从字符串中提取子字符串,直到在ASP.Net C#中找到逗号.有人可以帮忙吗?

the*_*oop 39

substring = str.Split(',')[0];
Run Code Online (Sandbox Code Playgroud)

如果str不包含任何逗号,则子字符串将与str相同.

编辑:与大多数事情一样,这种情况的表现会因边缘情况而异.如果有很多逗号,这将在堆上创建许多不会被使用的String实例.如果它是一个5000字符的字符串,在开头附近有一个逗号,则IndexOf + Substring方法将执行得更好.但是,对于相当小的字符串,此方法可以正常工作.

  • 是的,关键是不需要检查任何东西. (2认同)
  • 请注意,对于在其开头附近包含逗号的大字符串,这非常低效.`String.IndexOf`将在找到第一个逗号时停止.`String.Split`将始终通过_entire_字符串.想想"你好,世界!我有一个很长的故事要告诉你." + [6000多个字符] +"希望你喜欢它!".这是你在那里的一个巨大的减速因素. (2认同)
  • 有没有人关心CPU和内存浪费,而不只是寻找代码"美丽"!!!! 如果用户提供类似" - , - , - , - , - , - , - , - , - , - , - ......"的字符串,它将生成一个包含大量String实例的数组,每个实例包含一个char" - ". (2认同)
  • 有许多潜在的性能缺陷,是正确的.但是,如果代码遭受严重影响,那么严重依赖于使用,所以尽管我完全赞同提及这些问题,但我不会将其作为有效的解决方案丢弃.所有这一切总结为这样一个事实:鉴于下面对鸽子的答案中的OP的评论,[s]他实际上想要使用斯普利特.:-) (2认同)

Kon*_*rin 12

var firstPart = str.Split(new [] { ',' }, 2)[0]
Run Code Online (Sandbox Code Playgroud)

第二个参数表示最大零件数.即使有很多逗号,指定2也可以确保性能良好.


Ian*_*lin 8

myString = myString.Substring(0,myString.IndexOf(','));
Run Code Online (Sandbox Code Playgroud)


Vin*_*vic 8

您可以使用IndexOf()找出逗号的位置,然后提取子字符串.如果您确定它将始终使用逗号,则可以跳过检查.

        string a = "asdkjafjksdlfm,dsklfmdkslfmdkslmfksd";
        int comma = a.IndexOf(',');
        string b = a;
        if (comma != -1)
        {
            b = a.Substring(0, comma);
        }
        Console.WriteLine(b);
Run Code Online (Sandbox Code Playgroud)


Ian*_*lin 5

Alina,根据您上面写的内容,Split 将为您工作。

string[] a = comment.Split(',');
Run Code Online (Sandbox Code Playgroud)

给定您的示例字符串,然后 a[0] = "aaa"、a[1] = "bbbbb"、a[2] = "cccc" 和 a[3] = "dddd"