2012-05-07 26 views
5

Tengo una cadena de palabras y deseo eliminar un número de sufijos y prefijos (que se encuentran en una matriz) de cada palabra, luego almacenar las palabras derivadas en una cadena. ¿Hay alguna sugerencia por favor? gracias por adelantado.Eliminando prefijos y sufijos de las palabras en C#

El número total de sufijos y prefijos es más de 100, ¿qué mejor que representarlos? ¿Formación? Regex? ¿Hay alguna sugerencia, por favor?

public static string RemoveFromEnd(this string str, string toRemove) 
{ 
if (str.EndsWith(toRemove)) 
    return str.Substring(0, str.Length - toRemove.Length); 
else 
    return str; 
} 

Esto puede funcionar con sufijos, ¿qué hay de los prefijos? ¿Hay una forma rápida de usar tanto los sufijos como los prefijos a la vez? Mi cadena es demasiado larga.

+3

¿Qué has intentado hasta ahora? ¿Podría mostrar algún ejemplo de entrada y el resultado que desea? –

+1

¿tiene usted un código inicial? StackOverflow está destinado a colaborar con el trabajo existente, no para recomendar. –

Respuesta

0
  1. Divida su cadena en una serie de picaduras, cada entrada es cada palabra. Para hacer esto, usa yourString.Split(','). Utilice el carácter que separa sus palabras en lugar de ',', puede ser un spcae ' '
  2. uso de un foreach para comprobar si sus palabras tienen cualquiera de los prefijos o sufixes, hacer que utilice yourWord.StartsWith("yourPrefix") y yourWord.EndsWith("yourPrefix")
  3. remove el prefijo/sufijo usando yourWord.Replace o yourWord.SubString. Tenga cuidado de no eliminar el prefijo/sufixx si está en el medio de la palabra!
+0

¿qué hay de las palabras que comienzan o terminan con los sufijos y prefijos, pero no son sufijos o prefijos. solo una parte de esas palabras? ¿cómo puede manejar este problema? –

+0

@JoneMamni mmhh ... ¿cómo distinguirías las palabras que tienen prefijo/sufijo de aquellas que no lo son? ¿tienes algún tipo de diccionario/variable_word_container variable? –

+0

sí, tengo un diccionario. –

0

Si no puede verificar desde un diccionario qué palabras son en realidad palabras, entonces las palabras como "premium" serán muy difíciles de no confundir con un prefijo. Teóricamente, podría crear una especie de reglas para verificar si el "mium" es una palabra en inglés, pero nunca sería completa y requeriría mucho trabajo.

9

My StringHelper class tiene (entre otros) Métodos TrimStart, trimend y StripBrackets, que pueden ser útiles para usted

//'Removes the start part of the string, if it is matchs, otherwise leave string unchanged 
    //NOTE:case-sensitive, if want case-incensitive, change ToLower both parameters before call 
    public static string TrimStart(this string str, string sStartValue) 
    { 
     if (str.StartsWith(sStartValue)) 
     { 
      str = str.Remove(0, sStartValue.Length); 
     } 
     return str; 
    } 
    //  'Removes the end part of the string, if it is matchs, otherwise leave string unchanged 
    public static string TrimEnd(this string str, string sEndValue) 
    { 
     if (str.EndsWith(sEndValue)) 
     { 
      str = str.Remove(str.Length - sEndValue.Length, sEndValue.Length); 
     } 
     return str; 
    } 
//  'StripBrackets checks that starts from sStart and ends with sEnd (case sensitive). 
//  'If yes, than removes sStart and sEnd. 
//  'Otherwise returns full string unchanges 
//  'See also MidBetween 
     public static string StripBrackets(this string str, string sStart, string sEnd) 
     { 
      if (StringHelper.CheckBrackets(str, sStart, sEnd)) 
      { 
       str = str.Substring(sStart.Length, (str.Length - sStart.Length) - sEnd.Length); 
      } 
      return str; 
     } 
+0

pero tengo muchos sufijos y prefijos. ¿Puedo ponerlos en una matriz o usar expresiones regulares tal vez? si puede, ¿cómo podría ser el código? –

+0

Actualice su pregunta para describir mejor cuáles son sus requisitos. Lo siento, no está claro para mí. –

+0

Puede conservar prefijos/sufijos en 2 listas o matrices y procesarlos de forma similar, por ejemplo, mis funciones FindFirstPatternContainedInString en http://geekswithblogs.net/mnf/articles/my-listofstringshelper--class.aspx –

Cuestiones relacionadas