2011-09-27 22 views
-1

是否有任何方法,我可以使用它返回一個固定長度的數組後,用一些分隔符分隔字符串和其餘的默認字符串。例如,在C中的字符串manuplation在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#? Java的? –

+0

沒有。寫一個。 –

+0

@Austin Salonen:Java字符串是大寫字母。 –

回答

0

您應該讀一讀Jon Skeet的Writing the perfect question。將來發布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

我將它設置爲分割字符串從固定陣列分開。如果你仍然想要一個固定的數組,那麼你將數組設置爲三個大小的填充。然而,這不是最好的方法,因爲它沒有意義。更好的是,建立一個人或用戶類,然後通過規則填充拆分字符串。