2011-09-27 66 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

我将它设置为分割字符串从固定阵列分开。如果你仍然想要一个固定的数组,那么你将数组设置为三个大小的填充。然而,这不是最好的方法,因为它没有意义。更好的是,建立一个人或用户类,然后通过规则填充拆分字符串。