c# - net - Insertar espacios entre las palabras en un token camel-cased
quitar espacios en blanco vb net (6)
Aquí hay un método de extensión que he usado ampliamente para este tipo de cosas
public static string SplitCamelCase( this string str )
{
return Regex.Replace(
Regex.Replace(
str,
@"(/P{Ll})(/P{Ll}/p{Ll})",
"$1 $2"
),
@"(/p{Ll})(/P{Ll})",
"$1 $2"
);
}
También maneja cadenas como "IBMMakeStuffAndSellIt", convirtiéndola en "IBM Make Stuff And Sell It" (IIRC)
Esta pregunta ya tiene una respuesta aquí:
¿Hay una buena función para convertir algo así como
Nombre de pila
a esto:
¿Nombre de pila?
Manera más simple:
var res = Regex.Replace("FirstName", "([A-Z])", " $1").Trim();
Puedes usar una expresión regular:
Match ([^^])([A-Z])
Replace $1 $2
En codigo:
String output = System.Text.RegularExpressions.Regex.Replace(
input,
"([^^])([A-Z])",
"$1 $2"
);
Regex:
http://weblogs.asp.net/jgalloway/archive/2005/09/27/426087.aspx http://.com/questions/773303/splitting-camelcase
(probablemente el mejor - vea la segunda respuesta) http://bytes.com/topic/c-sharp/answers/277768-regex-convert-camelcase-into-title-case
Para convertir de UpperCamelCase a Title Case, use esta línea: Regex.Replace ("UpperCamelCase", @ "(/ B [AZ])", @ "$ 1");
Para convertir tanto de lowerCamelCase como de UpperCamelCase en Title Case, use MatchEvaluator: public string toTitleCase (Match m) {char c = m.Captures [0] .Value [0]; return ((c> = ''a'') && (c <= ''z''))? Char.ToUpper (c) .ToString (): "" + c; } y cambie un poco su expresión regular con esta línea: Regex.Replace ("UpperCamelCase o lowerCamelCase", @ "(/ b [az] | / B [AZ])", nuevo MatchEvaluator (toTitleCase));
Ver: .NET - ¿Cómo se puede dividir una cadena delimitada de "mayúsculas" en una matriz?
Especialmente:
Regex.Replace("ThisIsMyCapsDelimitedString", "(//B[A-Z])", " $1")
/// <summary>
/// Parse the input string by placing a space between character case changes in the string
/// </summary>
/// <param name="strInput">The string to parse</param>
/// <returns>The altered string</returns>
public static string ParseByCase(string strInput)
{
// The altered string (with spaces between the case changes)
string strOutput = "";
// The index of the current character in the input string
int intCurrentCharPos = 0;
// The index of the last character in the input string
int intLastCharPos = strInput.Length - 1;
// for every character in the input string
for (intCurrentCharPos = 0; intCurrentCharPos <= intLastCharPos; intCurrentCharPos++)
{
// Get the current character from the input string
char chrCurrentInputChar = strInput[intCurrentCharPos];
// At first, set previous character to the current character in the input string
char chrPreviousInputChar = chrCurrentInputChar;
// If this is not the first character in the input string
if (intCurrentCharPos > 0)
{
// Get the previous character from the input string
chrPreviousInputChar = strInput[intCurrentCharPos - 1];
} // end if
// Put a space before each upper case character if the previous character is lower case
if (char.IsUpper(chrCurrentInputChar) == true && char.IsLower(chrPreviousInputChar) == true)
{
// Add a space to the output string
strOutput += " ";
} // end if
// Add the character from the input string to the output string
strOutput += chrCurrentInputChar;
} // next
// Return the altered string
return strOutput;
} // end method