45 votos

La mejor manera de convertir Pascal Caso de una sentencia

¿Cuál es la mejor manera para convertir de Pascal (superior Camel Case) a una frase.

Empezando por ejemplo con

"AwaitingFeedback"

y convertir que a

"Awaiting feedback"

C# preferible, pero puedo convertir de Java o similar.

14voto

Sandeep Datta Puntos 7344

Aquí la tienes...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CamelCaseToString
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(CamelCaseToString("ThisIsYourMasterCallingYou"));   
        }

        private static string CamelCaseToString(string str)
        {
            if (str == null || str.Length == 0)
                return null;

            StringBuilder retVal = new StringBuilder(32);

            retVal.Append(char.ToUpper(str[0]));
            for (int i = 1; i < str.Length; i++ )
            {
                if (char.IsLower(str[i]))
                {
                    retVal.Append(str[i]);
                }
                else
                {
                    retVal.Append(" ");
                    retVal.Append(char.ToLower(str[i]));
                }
            }

            return retVal.ToString();
        }
    }
}

10voto

SSTA Puntos 111

Esto funciona para mí:

Regex.Replace(strIn, "([A-Z]{1,2}|[0-9]+)", " $1").TrimStart()

4voto

Garry Shutler Puntos 20898

He aquí una forma básica de hacerlo que se me ocurrió usar Regex

public static string CamelCaseToSentence(this string value)
{
    var sb = new StringBuilder();
    var firstWord = true;

    foreach (var match in Regex.Matches(value, "([A-Z][a-z]+)|[0-9]+"))
    {
        if (firstWord)
        {
            sb.Append(match.ToString());
            firstWord = false;
        }
        else
        {
            sb.Append(" ");
            sb.Append(match.ToString().ToLower());
        }
    }

    return sb.ToString();
}

También se separó de números que no especifiqué, pero sería útil.

3voto

JefClaes Puntos 1416

Encontré esto en la MvcContrib fuente, parece ser que no se mencionan aquí todavía.

return Regex.Replace(input, "([A-Z])", " $1", RegexOptions.Compiled).Trim();

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: