Можно ли использовать синтаксис инициализации C # для передачи параметра? - PullRequest
4 голосов
/ 07 июля 2010

В C #, используя синтаксис инициализации, я могу сказать:

string[] mystrings = {"one", "two", "three"};

Можно ли использовать тот же синтаксис инициализации массива для преобразования этого:

string test = "This is a good sentance to split, it has at least one split word to split on.";
string[] mystrings = test.Split(new string[] { "split" }, StringSplitOptions.RemoveEmptyEntries);

На что-то вроде этого:

string test = "This is a good sentance to split, it has at least one split word to split on.";
string[] mystrings = test.Split({ "split" }, StringSplitOptions.RemoveEmptyEntries);

Кажется, это должно сработать, но я не могу заставить его что-либо делать.

Ответы [ 4 ]

7 голосов
/ 07 июля 2010

Почти там:

string[] mystrings = test.Split(new[]{ "split" }, 
    StringSplitOptions.RemoveEmptyEntries);
2 голосов
/ 07 июля 2010

Похоже, вам нужен новый string метод:

public static class StringExtensions {
  public static string[] Split(this string self, string separator, StringSplitOptions options) {
    return self.Split(new[] { separator }, options);
  }
}

Используйте это так:

string[] mystrings = test.Split("split", StringSplitOptions.RemoveEmptyEntries);

Теперь вам решать, стоит ли это вводить или нет.

Для нескольких разделителей вы можете исправить параметр options (или поместить его вперед, что будет выглядеть неестественно из-за других «перегрузок»):

public static class StringExtensions {
  // maybe just call it Split
  public static string[] SplitAndRemoveEmptyEntries(this string self, params string[] separators) {
    return self.Split(separators, StringSplitOptions.RemoveEmptyEntries);
  }
}

И использование:

string[] mystrings = test.SplitAndRemoveEmptyEntries("banana", "split"); 
1 голос
/ 07 июля 2010

Вы, конечно, можете иметь такой синтаксис:

string test = "This is a good sentance to split, it has at least one split word to split on.";
string[] mystrings = test.Split(new[] { "split" }, StringSplitOptions.RemoveEmptyEntries);

, но я не уверен, что вы сможете еще больше упростить его ...

0 голосов
/ 07 июля 2010

Вы можете добавить метод расширения:

    public static String[] Split(this string myString, string mySeperator, StringSplitOptions options)
    {
        return myString.Split(new[] {mySeperator}, options);
    }

Тогда вы можете сделать:

    string test = "This is a good sentance to split, it has at least one split word to split on.";
    string[] mystrings = test.Split("split", StringSplitOptions.RemoveEmptyEntries);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...