2011-09-27 4 views
-1

Есть ли какой-либо метод, который я могу использовать, который возвращает массив фиксированной длины после разделения строки с некоторым разделителем и заполняет остальную строку по умолчанию. Например.Манипуляция строк в C#

string fullName = "Jhon Doe"; 
string[] names = fullName.SpecialSplit(some parameters); //This should always return string array of length 3 with the second elememnt set to empty if there is no middle name. 
+3

Язык? C#? Ява? –

+0

Нет. Напишите один. –

+0

@Austin Salonen: строка Java заглавная. –

ответ

0

Вам следует прочитать Writing the perfect question от Jon Skeet. Это будет полезно для вас в будущем при публикации вопросов StackOverflow.

В C# нет способа сделать то, что вы просите, но вы можете легко написать extension method, чтобы делать то, что, я думаю, вы просите.

вот быстрый пример:

public static class AbreviatorExtention 
    { 

     public static string[] GetInitials(this String str, char splitChar) 
     { 
      string[] initialArray = new string[3]; 
      var nameArray = str.Split(new char[] { splitChar }, 
          StringSplitOptions.RemoveEmptyEntries); 

      if (nameArray.Length == 2) 
      { 
       var charArrayFirstName = nameArray[0].ToCharArray(); 
       var charArrayLastName = nameArray[1].ToCharArray(); 

       initialArray[0] = charArrayFirstName[0].ToString().ToUpper(); 
       initialArray[1] = string.Empty; 
       initialArray[2] = charArrayLastName[0].ToString().ToUpper(); 
      } 
      else 
      { 
       for (int i = 0; i < nameArray.Length; i++) 
       { 
        initialArray[i] = (nameArray[i].ToCharArray())[1] 
             .ToString().ToUpper(); 
       } 
      } 


      return initialArray; 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      string FullName = "john doe"; 

      //Extension method in use 
      string[] names = FullName.GetInitials(' '); 

      foreach (var item in names) 
      { 
       Console.WriteLine(item); 
      } 

      Console.ReadLine(); 
     } 
    } 

Выход:

J 

D 
1

В следующий раз укажите язык, о котором вы спрашиваете. Мы не догадываемся.

В Java:

fullName.split(" "); 

И в любом случае, не метод будет «возвращение массив строк длины 3 со вторым elememnt установлен на пустой, если нет отчества». Для метода существует всего два элемента. Вы должны написать этот метод самостоятельно, обернув стандартный метод split().

0

Я бы поставил его, чтобы разбить строку отдельно от фиксированного массива. Если вам по-прежнему нужен фиксированный массив, вы можете настроить массив размером до трех человек. Однако это не лучший метод, поскольку он не имеет никакого значения. Лучше настроить персональный или пользовательский класс, а затем заполнить по правилам из разделенной строки.

Смежные вопросы