105 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
#if FRAMEWORK20
 | 
						|
    internal static class StringHelper
 | 
						|
#else
 | 
						|
	internal class StringHelper
 | 
						|
#endif
 | 
						|
    {
 | 
						|
        internal static string Capitalize(string s)
 | 
						|
        {
 | 
						|
            if (s.Length > 1)
 | 
						|
                return s.Substring(0, 1).ToUpper() + s.Substring(1);
 | 
						|
            return s;
 | 
						|
        }
 | 
						|
 | 
						|
        internal static string GetFriendlyName(string fieldName)
 | 
						|
        {
 | 
						|
            fieldName = fieldName.Replace('_', ' ');
 | 
						|
#if FRAMEWORK20
 | 
						|
            if (fieldName.Contains(" "))
 | 
						|
#else
 | 
						|
			if (fieldName.IndexOf(" ") >= 0)
 | 
						|
#endif
 | 
						|
            {
 | 
						|
                string[] words = fieldName.Split(' ');
 | 
						|
                StringBuilder builder = new StringBuilder(fieldName.Length);
 | 
						|
                for (int i = 0; i < words.Length; i++)
 | 
						|
                {
 | 
						|
                    builder.Append(Capitalize(words[i]));
 | 
						|
                    if (i < words.Length - 1)
 | 
						|
                        builder.Append(' ');
 | 
						|
                }
 | 
						|
                return builder.ToString();
 | 
						|
            }
 | 
						|
            else if (fieldName.Length > 2)
 | 
						|
            {
 | 
						|
                bool hadUpperCase = false;
 | 
						|
                int lastUpperCaseIndex = -1;
 | 
						|
                StringBuilder builder = new StringBuilder(fieldName.Length + 10);
 | 
						|
                for (int i = 0; i < fieldName.Length; i++)
 | 
						|
                {
 | 
						|
                    if (IsUpperCase(fieldName[i]))
 | 
						|
                    {
 | 
						|
                        if (hadUpperCase && i - lastUpperCaseIndex > 1)
 | 
						|
                        {
 | 
						|
                            builder.Append(' ');
 | 
						|
                            builder.Append(fieldName[i]);
 | 
						|
                            lastUpperCaseIndex = i;
 | 
						|
                        }
 | 
						|
                        else if (!hadUpperCase)
 | 
						|
                        {
 | 
						|
                            lastUpperCaseIndex = i;
 | 
						|
                            hadUpperCase = true;
 | 
						|
                            if (i > 0) builder.Append(' ');
 | 
						|
                            builder.Append(fieldName[i]);
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            lastUpperCaseIndex = i;
 | 
						|
                            builder.Append(fieldName[i].ToString().ToLower());
 | 
						|
                            hadUpperCase = true;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        if (hadUpperCase)
 | 
						|
                            builder.Append(fieldName[i]);
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            builder.Append(fieldName[i].ToString().ToUpper());
 | 
						|
                            hadUpperCase = true;
 | 
						|
                            lastUpperCaseIndex = i;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return builder.ToString();
 | 
						|
            }
 | 
						|
 | 
						|
            return fieldName;
 | 
						|
        }
 | 
						|
 | 
						|
        internal static bool IsUpperCase(char c)
 | 
						|
        {
 | 
						|
            return IsUpperCase(c.ToString());
 | 
						|
        }
 | 
						|
 | 
						|
        internal static bool IsUpperCase(string s)
 | 
						|
        {
 | 
						|
            return s.ToUpper() == s;
 | 
						|
        }
 | 
						|
 | 
						|
        internal static string Repeat(char repeatCharacter, int count)
 | 
						|
        {
 | 
						|
            StringBuilder builder = new StringBuilder();
 | 
						|
            builder.Append(repeatCharacter, count);
 | 
						|
            
 | 
						|
            return builder.ToString();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |