Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Splitting CamelCase

Tags:

string

c#

asp.net

This is all asp.net c#.

I have an enum

public enum ControlSelectionType  {     NotApplicable = 1,     SingleSelectRadioButtons = 2,     SingleSelectDropDownList = 3,     MultiSelectCheckBox = 4,     MultiSelectListBox = 5 } 

The numerical value of this is stored in my database. I display this value in a datagrid.

<asp:boundcolumn datafield="ControlSelectionTypeId" headertext="Control Type"></asp:boundcolumn> 

The ID means nothing to a user so I have changed the boundcolumn to a template column with the following.

<asp:TemplateColumn>     <ItemTemplate>         <%# Enum.Parse(typeof(ControlSelectionType), DataBinder.Eval(Container.DataItem, "ControlSelectionTypeId").ToString()).ToString()%>     </ItemTemplate> </asp:TemplateColumn> 

This is a lot better... However, it would be great if there was a simple function I can put around the Enum to split it by Camel case so that the words wrap nicely in the datagrid.

Note: I am fully aware that there are better ways of doing all this. This screen is purely used internally and I just want a quick hack in place to display it a little better.

like image 865
Robin Day Avatar asked Apr 21 '09 15:04

Robin Day


People also ask

How do you split a camelCase in Python?

First, use an empty list 'words' and append the first letter of 'str' to it. Now using a for loop, check if the current letter is in lower case or not, if yes append it to the current string, otherwise, if uppercase, begin a new individual string.

What is camelCase example?

Meaning of camel case in English. the use of a capital letter to begin the second word in a compound name or phrase, when it is not separated from the first word by a space: Examples of camel case include "iPod" and "GaGa".

How do you convert a camelCase?

For CamelCase spaces are removed between words and the first letter of each word is capitalized. Accordingly, the result is a compound word of multiple words. The text can simply be typed or copied into the form.

What are camelCase words?

CamelCase is a way to separate the words in a phrase by making the first letter of each word capitalized and not using spaces. It is commonly used in web URLs, programming and computer naming conventions. It is named after camels because the capital letters resemble the humps on a camel's back.


2 Answers

I used:

    public static string SplitCamelCase(string input)     {         return System.Text.RegularExpressions.Regex.Replace(input, "([A-Z])", " $1", System.Text.RegularExpressions.RegexOptions.Compiled).Trim();     } 

Taken from http://weblogs.asp.net/jgalloway/archive/2005/09/27/426087.aspx

vb.net:

Public Shared Function SplitCamelCase(ByVal input As String) As String     Return System.Text.RegularExpressions.Regex.Replace(input, "([A-Z])", " $1", System.Text.RegularExpressions.RegexOptions.Compiled).Trim() End Function 
like image 131
Tillito Avatar answered Sep 19 '22 15:09

Tillito


Indeed a regex/replace is the way to go as described in the other answer, however this might also be of use to you if you wanted to go a different direction

    using System.ComponentModel;     using System.Reflection; 

...

    public static string GetDescription(System.Enum value)     {         FieldInfo fi = value.GetType().GetField(value.ToString());         DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);         if (attributes.Length > 0)             return attributes[0].Description;         else             return value.ToString();     } 

this will allow you define your Enums as

public enum ControlSelectionType  {     [Description("Not Applicable")]     NotApplicable = 1,     [Description("Single Select Radio Buttons")]     SingleSelectRadioButtons = 2,     [Description("Completely Different Display Text")]     SingleSelectDropDownList = 3, } 

Taken from

http://www.codeguru.com/forum/archive/index.php/t-412868.html

like image 26
Eoin Campbell Avatar answered Sep 23 '22 15:09

Eoin Campbell