2009-10-20 9 views
9

Existe-t-il un moyen facile de supprimer les 2 premiers et les 2 derniers caractères d'une chaîne?Comment supprimer les deux premiers et les deux derniers caractères d'une chaîne?

J'ai cette chaîne:

\nTESTSTRING\n 

Comment pourrais-je les supprimer facilement?

+2

Votre question est fausse. "\ n" est un caractère (également noté dans un commentaire ci-dessous). –

+0

... à moins que ce ne soit non seulement le caractère \ n mais en fait la combinaison de caractères \ r \ n qui est utilisée comme saut de ligne sur les systèmes non * nix. – Guffa

+0

Si vous voulez simplement supprimer \ n caractères, vous pouvez utiliser: 'str.Replace ('\ n', '');' –

Répondre

46
str = str.Substring(2,str.Length-4) 

Bien sûr, vous devez vérifier que la chaîne contient plus de 4 caractères avant de faire cela. Aussi dans votre cas, il semble que \ n est un seul caractère de nouvelle ligne. Si tout ce que vous voulez faire est de retirer de premier plan et des espaces blancs de fin, vous devez utiliser

str.Trim() 

comme suggéré par Charles

+0

Ceci est la bonne réponse à la question posée, mais il semble que l'OP ne réalise pas que \ n est l'échappement pour une nouvelle ligne. –

+0

La première partie est correcte pour mon utilisation. Le second n'est pas applicable parce que je l'utilise en HTML, et en utilisant le. Trim() ne supprime pas du tout les espaces. –

+1

@Manu SubString doit être sous-chaîne. C'est trop petit d'un edit pour moi de soumettre – MobileMon

5

Avez-vous essayé:

myString.Trim(); 
+3

\ n est un caractère unique. –

2
myString = myString.SubString(2, myString.Length - 4); 
+1

Nécessite une vérification de 'Length <4'. –

+0

(myString == ESTSTRIN) == true –

6
// Test string 
var str = "\nTESTSTRING\n"; 

// Number of characters to remove on each end 
var n = 2; 

// Slimmed string 
string slimmed; 

if (str.Length > n * 2) 
    slimmed = str.Substring(n, str.Length - (n * 2)); 
else 
    slimmed = string.Empty; 

// slimmed = "ESTSTRIN" 
0

Papuccino1,

Si vous créez une méthode d'extension comme ceci:

public static class StringEnumerator { 

    public static IEnumerable<String> GetLines(this String source) { 
     String line = String.Empty; 
     StringReader stringReader = new StringReader(source); 

     while ((line = stringReader.ReadLine()) != null) { 
      if (!String.IsNullOrEmpty(line)) { 
       yield return line; 
      } 
     } 
    } 
} 

votre code sera simplifié et sera plus sûr (ne dépend pas de l'indice dangereux):

class Program { 

    static void Main(string[] args) { 
     String someText = "\nTESTSTRING\n"; 
     String firstLine = someText.GetLines().First(); 
    } 
} 

J'espère que cette aide,

Ricardo Lacerda Castelo Branco

0
public string RemoveFirstCharFromString(string Text) 
    { 
     string[] arr1 = new string[] { "The ", "A " }; 

     string Original = Text.ToLower(); 
     if (Text.Length > 4) 
     { 
      foreach (string match in arr1) 
      { 
       if (Original.StartsWith(match.ToLower())) 
       { 
        //Original = Original.Replace(match.ToLower(), "").TrimStart(); 
        Original = Original.Replace(Original.Substring(0, match.Length), "").TrimStart(); 
        return Original; 
       } 
      } 
     } 
     return Original; 
    } 
0
string Origional = TextBox1.Text.Replace(TextBox1.Text.Substring(0, 2), ""); 
Origional += Origional.Replace(Origional.Substring((Origional.Length - 2), 2), ""); 
+1

est généralement utile pour fournir des explications supplémentaires au lieu de coller uniquement du code. – Tivie

+0

L'origional ne doit-il pas être original? Je ne peux pas modifier, car je serais toujours sous la limite de 6 caractères. – WEFX

0

Son simple avec Substring et Remove méthodes, comme détaillé dans this link:

string mystring = "122014"; 

mystring = mystring.Substring(mystring.Length - 4); 
Response.Write(mystring.ToString()); 

//output:2014 


mystring = "122014"; 
string sub = mystring.Remove(mystring.Length - 4); 
Response.Write("<br>"); 
Response.Write(sub.ToString()); 

//output: 12 
Questions connexes