Hola que tal, bueno lo prometido es deuda... Me tarde un poco porque tenia unas cosas que terminar
Código C#:
Ver originalpublic static void fCadenas()
{
string sCadena = "C140K42---P150", sPuente = "";
string sCadenaFinal = null;
Int32 i = 0, nCaracteres = 0, nTotalCaracteresCopiar = 0;
char[] cImporteFormatear = new char[20];
char[] cFormato = new char[10];
bool bSeguir = true;
try
{
// Se limpian las cadenas char
for (i = 0; i <= 19; i++)
{
cImporteFormatear[i] = ' ';
}
for (i = 0; i <= 9; i++)
{
cFormato[i] = ' ';
}
// Se cambia la cadena String por char
for (i = 0; ( i < sCadena.Length ) && bSeguir; i++)
{
cImporteFormatear[i] = sCadena[nCaracteres];
nCaracteres++;
}
// Se lee la cadena char desde el ultimo registro hasta el primero, siempre y cuando sea número ira tomando los valores.
// Al encontrar la primera letra saldra del ciclo.
// Se obtiene el valor 051
nCaracteres = 0;
sCadenaFinal = new string(cImporteFormatear);
nTotalCaracteresCopiar = sCadenaFinal.ToString().Trim().Length;
for (i = cImporteFormatear.ToString().Length; (i > 0) && bSeguir; i--)
{
nTotalCaracteresCopiar--;
if (Char.IsNumber(cImporteFormatear[nTotalCaracteresCopiar]))
{
cFormato[nCaracteres] = cImporteFormatear[nTotalCaracteresCopiar];
nCaracteres++;
}
else
{
bSeguir = false;
}
}
// Se limpian las cadenas char
for (i = 0; i <= 19; i++)
{
cImporteFormatear[i] = ' ';
}
// Se lee la cadena char desde el ultimo registro hasta el primero, para mostrarlos ordenados ( Se lee el valor 150 )
nCaracteres = 0;
sCadenaFinal = new string(cFormato);
sPuente = sCadenaFinal.ToString().Trim();
nTotalCaracteresCopiar = sPuente.Length;
for (i = sPuente.Length; i > 0; i--)
{
nTotalCaracteresCopiar--;
cImporteFormatear[nCaracteres] = cFormato[nTotalCaracteresCopiar];
nCaracteres++;
}
string sCadenaMostrar = new string(cImporteFormatear);
MessageBox.Show(sCadenaMostrar);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
Lo hice en C# y funciona sin importar cuantos numeros tengas al final.
Espero te sirva
Esta hecho de un modo rapido, pero si lo puedes mejorar adelante, esta seria la idea principal

... Cualquier cosa me avisas.