2011-06-30 10 views

Respuesta

32

Bueno, se podría utilizar:

string result = "123" + text.PadLeft(9, '0'); 

En otras palabras, dividir la tarea en dos - una parte que genera el "000 028 431", "000 000 987", etc pieza utilizando string.PadLeft, y el otro prefija el resultado con "123" usando una concatenación simple de cadenas.

Sin duda existen enfoques más eficientes, pero esto es lo que haría si no tuviera una buena razón para creer que la eficiencia era realmente importante para esta tarea.

+0

Lol, estaba a punto de preguntarte qué tan eficiente era ese enfoque, supongo que solo se llamará una o dos veces, por lo que no funciona realmente importa :) – Jethro

+0

Apuesto a que hay una docena de lugares más en cualquier aplicación que serán más ineficaces que este fragmento de código. – jgauffin

15
var result = string.Format("123{0}", number.PadLeft(9, '0')); 
1

Bueno, si tiene números menores que 1000000000, podría simplemente agregar 123000000000 a cada número.

+0

Los valores son 'string's, no un tipo numérico. –

+0

Ah ... vale ... Acabo de suponer que eran numéricos, ya que esos eran los ejemplos. Parece que hay otras buenas respuestas. – Narnian

2

Suponiendo ...

  1. Se conocen las cuerdas para contener siempre representaciones de enteros decimales.
  2. El número entero representado siempre es menor que 10 .

... usted puede hacer esto:

(123000000000 + long.Parse(s)).ToString() 
0

probar este código

  string argString ="28431 "; 

      StringBuilder sb =new StringBuilder(); 
      sb.Append(argString); 
      for (int i = 12 -argString.Length-3; i >0 ; i--) 
      { 
       sb.Insert(0, "0");    
      } 

      string result = string.Format("123{0}",sb.ToString()); 
+0

@jethro, lo siento, lo tendré en cuenta la próxima vez ... gracias por su sugerencia –

4

Usted podría intentar:

var str = String.Format("123{0:0#########}", 28431); 

o

var str = String.Format("123{0:000000000}", 28431); 
Cuestiones relacionadas