2010-01-08 27 views
6

Tengo un valor de cadena que necesito para obtener el bit medio, p. Ej. "Cancelar pagador"/"Nuevo sin papel".Split String Value C#

Estos son un ejemplo del formato de cadena:

"REF_SPHCPHJ0000057_Cancel Payer_20100105174151.pdf"
"REF_SPHCPHJ0000056_New Paperless_20100105174151.pdf"

+4

Me parece que es el tercer elemento ([2]) de la operación de división? ¿Qué problema tienes al llamar a '.Split ('_') [2]'? –

Respuesta

16
string s = "REF_SPHCPHJ0000057_Cancel Payer_20100105174151.pdf"; 
string middleBit = s.Split('_')[2]; 
Console.WriteLine(middleBit); 

salida es

Cancel Payer 
+6

+1 Bueno, la expresión regular seguramente es poderosa, pero cuando una buena división hace el truco ... –

5

No es éste un lugar para expresiones regulares?

Regex re = new Regex(@".*_(?<middle>\w+ \w+)_.*?"); 
string name = "REF_SPHCPHJ0000057_Cancel Payer_20100105174151.pdf"; 
string middle = re.Match(name).Groups["middle"].Value; 
+4

Parece un poco exagerado simplemente dividir una cadena. –

+0

Respeto tu opinión; ty para su comentario –

0

creo que esta expresión regular:

Regex re = new Regex(@"\w+_\w+_(?<searched>.*)_\d*.pdf"); 

se adapte a sus necesidades, si los archivos PDF siempre vienen a usted como

REF_<text>_<your text here>_<some date + id maybe>.pdf 
0

No puedo escribir comentarios todavía ... pero tengo que decir que la solución de Jasons no funcionará correctamente en caso de que haya un guión bajo en el "bit del medio". Devolverá solo la parte antes del subrayado.

Cuestiones relacionadas