是否有速记可以避免新的[...]'在String.Split?

时间:2017-02-07 12:12:53

标签: c# .net .net-4.5

对于所有c#优雅的C ++而言,这对我来说总是显得笨拙(而且我这里的老校友也不用担心这个阵容!)

是否有更优雅的语法或我错过的重载方法?

E.g。 SELECT TOP (15) bt_id AS [Key] , UPPER(rtrim(ltrim(bt_id)))+' - '+UPPER(rtrim(ltrim(bt_desc))) AS [Description] FROM (SELECT bt_id , bt_desc FROM fcbillto WHERE bt_id like @SearchTerm + '%' UNION SELECT bt_id , bt_desc FROM fcbillto WHERE bt_desc like @SearchTerm + '%') search ORDER BY bt_id -- I presume?

3 个答案:

答案 0 :(得分:2)

其中一个重载是params char[],因此您可以根据需要传入尽可能多的字符,而无需先创建数组。

"split me".Split('s','m'); // a random example

参考documentation for string.Split

编辑以回应评论

  

虽然如何指定要返回的最大元素数?这不可能吗?

您可以创建自己的扩展程序,以便您可以使用这两种方法中的最佳方法。

public static class CustomExtensions
{
    public static string[] Split(this string stringToSplit, int count, params char[] separator)
    {
        // todo: add some parameter validation checks (or not, your choice)
        return stringToSplit.Split(separator, count);
    }
}

然后叫它

var result = "split me".Split(3, 's', 'm'); // a random example

答案 1 :(得分:0)

正如您从MSDN页面所看到的,如果您使用字符作为参数,则无需创建数组

这是因为参数定义为params char[],这意味着它需要一个数组,或者只是一个参数列表

string myString = "a,b;c";
string[] splittedString = myString.split(',', ';');

基本相同
string myString = "a,b;c";
string[] splittedString = myString.split(new char[] { ',', ';' });

或甚至

string myString = "a,b;c";
string[] splittedString = myString.split(new [] { ',', ';' });

答案 2 :(得分:0)

传入char以单引号分割(因为Split()采用param char [])

string str = "this is a sentence";
var s = str.Split(' '); // { "this", "is", "a", "sentence" }
var t = str.Split('s'); // { "thi", " i", " a ", "entence" }