2010-10-11 5 views
15

Comment faire pour supprimer les espaces entre les caractères dans C#?Comment faire pour couper les espaces entre les caractères

Trim() peut être utilisé pour supprimer les espaces vides au début de la chaîne ainsi qu'à la fin. Par exemple " C Sharp ".Trim() résultats "C Sharp".

Mais comment faire la chaîne en CSharp? Nous pouvons supprimer l'espace en utilisant une boucle for ou une boucle for each avec une variable temporaire. Mais y at-il une méthode intégrée dans C#(.Net framework 3.5) pour le faire comme Trim()?

+0

[Pas construit en méthode] (http: // dotnetperls.com/remove-whitespace) mais assez simple –

Répondre

33

Vous pouvez utiliser la méthode String.Replace

string str = "C Sharp"; 
str = str.Replace(" ", ""); 

ou si vous voulez supprimer tous les caractères blancs (espace, onglets, sauts de ligne ...)

string str = "C Sharp"; 
str = Regex.Replace(str, @"\s", ""); 
+0

oh .... oui. j'ai pour obtenir de la méthode 'replace'. Merci –

+2

Cela remplace juste les espaces, pas les espaces (les deux ne sont pas les mêmes) –

+0

@Paul, vous avez raison, merci. J'ai mis à jour ma réponse. –

0
string myString = "C Sharp".Replace(" ", ""); 
+1

Le littéral de caractère vide '' produit une erreur de compilation. –

+1

remplacez '' '' dans '" "' ' –

2

Utilisez String.Replace pour remplacer tout l'espace blanc avec rien.

par exemple

string newString = myString.Replace(" ", ""); 
+2

Cela remplace simplement l'espace (ASCII), pas tous les espaces? Voir la discussion ici http://msdn.microsoft.com/en-us/library/t97s7bs3.aspx –

+0

-1: Vous ne pouvez pas avoir un caractère littéral vide. – Richard

+0

@Paul Discussion où? Ce lien est à propos de String.Trim – w69rdy

0

J'ai trouvé cette méthode idéale pour faire des choses comme la construction d'une classe qui utilise une propriété calculée pour prendre permet de dire un « productName » et décapage les espaces blancs à créer une URL qui correspondra à un image qui utilise le nom du produit sans espaces. Par exemple:

namespace XXX.Models 
    { 
     public class Product 
     { 
      public int ProductID { get; set; } 
      public string ProductName { get; set; } 
      public string ProductDescription { get; set; } 

      public string ProductImage 
      { 
       get { return ProductName.Replace(" ", string.Empty) + ".jpg"; } 
      } 
     } 
    } 

Donc, dans cette réponse, j'ai utilisé une méthode très similaire à celle w69rdy, mais utilisé dans un exemple, plus j'utilisé string.Empty au lieu de « ». Et même si après .Net 2.0 il n'y a pas de différence, je trouve que c'est beaucoup plus facile à lire et à comprendre pour les autres qui pourraient avoir besoin de lire mon code. Je préfère aussi cela parce que je me perds parfois dans toutes les citations que je pourrais avoir dans un bloc de code.

1

Si vous voulez garder un espace entre chaque mot. cela devrait le faire ..

public static string TrimSpacesBetweenString(string s) 
    { 
     var mystring =s.RemoveTandNs().Split(new string[] {" "}, StringSplitOptions.None); 
     string result = string.Empty; 
     foreach (var mstr in mystring) 
     { 
      var ss = mstr.Trim(); 
      if (!string.IsNullOrEmpty(ss)) 
      { 
       result = result + ss+" "; 
      } 
     } 
     return result.Trim(); 

    } 

il supprimera la chaîne entre la chaîne donc si l'entrée est

var s ="c   sharp"; 
result will be "c sharp"; 
+2

'string.Join (" ", s.Split (nouveau char [0], StringSplitOptions.RemoveEmptyEntries) .ToList(). Sélectionnez (w => w. Trim())); ' –

1
//Remove spaces from a string just using substring method and a for loop 
static void Main(string[] args) 
{ 
    string businessName; 
    string newBusinessName = ""; 
    int i; 

    Write("Enter a business name >>> "); 
    businessName = ReadLine(); 

    for(i = 0; i < businessName.Length; i++) 
    { 
     if (businessName.Substring(i, 1) != " ") 
     { 
      newBusinessName += businessName.Substring(i, 1); 
     } 
    } 

    WriteLine("A cool web site name could be www.{0}.com", newBusinessName); 
} 
+0

Pour les chaînes plus longues, il est préférable d'utiliser' StringBuilder' plutôt que '+ =', car il ne recréera pas l'objet String avec chaque concaténation. –

Questions connexes