2011-03-05 31 views
15

Tengo una cadena grande y está almacenada en una cadena variable str. ¿Y quiero obtener una subcadena de eso en C#? Supongamos que la cadena es: Resultado " Retrieves a substring from this instance. The substring starts at a specified character position."Cómo obtener subcadena de cadena en C#?

Subcadena lo que quiero mostrar es: The substring starts at a specified character position.

+3

¿Por qué desea utilizar Subcadena? Probablemente haya mejores formas de hacer lo que necesita luego de usar Substring con un número mágico, pero como no nos ha dicho cuál es su objetivo principal, es difícil sugerir mejores enfoques. –

Respuesta

16
string newString = str.Substring(0,10) 

le dará los primeros 10 caracteres (de la posición 0 a la posición 9).

Ver here.

4

Aquí hay un ejemplo de cómo obtener una subcadena de 14 caracteres hasta el final de la cadena. Se puede modificar para que se adapte a sus necesidades

string text = "Retrieves a substring from this instance. The substring starts at a specified character position."; 
//get substring where 14 is start index 
string substring = text.Substring(14); 
+0

adrian, lo siento, normalmente no hago downvotes (fácilmente) pero en este caso tuve que hacerlo. no solo es un poco "inseguro", sino que tampoco seguimos con ninguna lógica acerca de por qué elegiste la magia # 14 (de hecho, eso nos lleva a 'cadena de esta ...'). Simplemente no entiendo. nuevamente, lo siento pero sentí que tenía que señalarlo. –

+0

14 es solo un número al azar, no siento que deba contar los caracteres de cuerda para Riya, él probablemente puede hacerlo por sí mismo ... Mi respuesta es solo un ejemplo de cómo obtener parte de la cuerda, no Tengo la intención de dar una solución completa a esto. En mi opinión, para problemas tan simples, es mejor apuntar a la dirección correcta que dar código completo para copiar y pegar ... –

+1

adrian - basé mi nerviosismo en el hecho de que la pregunta explícitamente se me preguntó: resultado de subcadena lo que quiero mostrar es: ' La subcadena comienza en una posición de carácter especificada. Por lo tanto, no pude ver la correlación en su respuesta (aparte de tomar la subcadena como una interpretación literal de la pregunta). dicho eso, obtengo su punto dando punteros, en lugar de respuestas completas. todo lo mejor por ahora –

19

Se podía hacerlo manualmente o utilizando IndexOf método.

manualmente:

int index = 43; 
string piece = myString.Substring(index); 

Usando IndexOf se puede ver dónde está el fullstop es:

int index = myString.IndexOf(".") + 1; 
string piece = myString.Substring(index); 
+0

+1 También sugiriendo un enfoque que no usa números mágicos. Aunque realmente la pregunta no está clara sobre lo que se debe hacer y por qué. –

+1

Sugeriría 'int index = 1 + myString.IndexOf (". "); string piece = myString.Substring (índice); 'omitir '.' –

+0

Editado, gracias :) –

2

Riya,

Haciendo la suposición de que desea dividir en el punto (.), entonces este es un enfoque que capturaría todas las ocurrencias:

// add @ to the string to allow split over multiple lines 
// (display purposes to save scroll bar appearing on SO question :)) 
string strBig = @"Retrieves a substring from this instance. 
      The substring starts at a specified character position. great"; 

// split the string on the fullstop, if it has a length>0 
// then, trim that string to remove any undesired spaces 
IEnumerable<string> subwords = strBig.Split('.') 
    .Where(x => x.Length > 0).Select(x => x.Trim()); 

// iterate around the new 'collection' to sanity check it 
foreach (var subword in subwords) 
{ 
    Console.WriteLine(subword); 
} 

disfrutar ...

1
string text = "Retrieves a substring from this instance. The substring starts at a specified character position. Some other text"; 

string result = text.Substring(text.IndexOf('.') + 1,text.LastIndexOf('.')-text.IndexOf('.')) 

Esto reducirá la parte de la cadena que se establecen entre los caracteres especiales.

0
var data =" Retrieves a substring from this instance. The substring starts at a specified character position."; 

var result = data.Split(new[] {'.'}, 1)[0]; 

de salida:

Recupera una subcadena de esta instancia. La subcadena comienza en una posición de carácter especificado .

0

it's easy to rewrite this code in C#...

Este método funciona si su valor está entre 2 subseries!

por ejemplo:

stringContent = "[myName]Alex[myName][color]red[color][etc]etc[etc]" 

llamadas deben ser:

myNameValue = SplitStringByASubstring(stringContent , "[myName]") 

colorValue = SplitStringByASubstring(stringContent , "[color]") 

etcValue = SplitStringByASubstring(stringContent , "[etc]") 
+1

En primer lugar, debe publicar su código como texto, la imagen se puede romper el enlace y no se puede buscar. En segundo lugar, debe usar la muestra de OP si cree que su respuesta es correcta – Prisoner

Cuestiones relacionadas