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();
}
}
}