对于所有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?
答案 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" }