Retirez certains espaces vides dans une chaîne en C #

voix
1

J'ai une chaîne comme suit:

strMyString = 4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ;

Je veux supprimer les espaces vides après le nom.

J'ai essayé d'utiliser

string.Replace( , string.Empty)

Mais cela supprimera tous les espaces vides dans la chaîne, je voulais supprimer uniquement des espaces vides après la partie du nom.

Ma sortie finale devrait aimer ce

strMyString = 4654564-|@$@|-Jennifer Austin-$@%@$-646565546-|@$@|-Dutchin Henry LLC-$@%@$-444309386-|@$@|-Winston Cooper LLC;

L'espace entre les noms doit être intact.

De l'aide? Merci d'avance.

Créé 27/11/2018 à 15:21
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
0

Si l'on suppose que le motif est un ensemble de paires nom / numéro, séparés en interne par « - | @ $ @ | - », avec les paires séparées par « - $ @% @ $ - », cela semble fonctionner:

 string input =
     "4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ";
 const string separator = "-$@%@$-";
 const string pattern = @"\s+-\$@%@\$-";
 var regex= new Regex(pattern);
 var firstPass = regex.Replace(input, separator);
 var result = firstPass.TrimEnd(' ');

Après la course, resultressemble à :

"4654564-|@$@|-Jennifer Austin-$@%@$-646565546-|@$@|-Dutchin Henry LLC-$@%@$-444309386-|@$@|-Winston Cooper LLC"

Les touches Regex hors du séparateur entre les paires, l'élimination des espaces avant le séparateur. Ensuite, les espaces de fin sont toujours là, donc je supprimer cela avecTrimEnd

Créé 27/11/2018 à 15:52
source utilisateur

voix
0
        string strMyString = "4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ";
        var subStrings = strMyString.Split('-').ToList();
        var newSubstrings = new List<string>();
        subStrings.ForEach(substring => newSubstrings.Add(substring.Trim(' ')));
        var newString = string.Join("-",newSubstrings);
        Console.WriteLine(newString);
Créé 27/11/2018 à 15:36
source utilisateur

voix
0

Suite à ce qui suit devrait faire vos commentaires:

var newText = string.Join("-$@%@$", text.Split(new[] {"-$@%@$"}, 
                                               StringSplitOptions.None)
                                        .Select(t => t.TrimEnd()));
Créé 27/11/2018 à 15:29
source utilisateur

voix
0

    string strMyString = "4654564-|@$@|-Jennifer Austin    -$@%@$-646565546-|@$@|-Dutchin Henry LLC    -$@%@$-444309386-|@$@|-Winston Cooper LLC   ";
    string pattern = "\\s+-";
    string replacement = "-";
    string result = Regex.Replace(strMyString, pattern, replacement);

https://dotnetfiddle.net/luJHd3

Créé 27/11/2018 à 15:29
source utilisateur

voix
-1

Le plus simple et plus facile à comprendre que la solution que je peux penser est la suivante:

strMyString = strMyString.Replace(@"    -$@%@$", @"-$@%@$").TrimEnd(' ');

Comme il a été souligné, s'il y a des quantités variables de espaces blancs, cela ne fonctionnera pas et ce serait une meilleure solution:

RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
strMyString = regex.Replace(strMyString, "");
Créé 27/11/2018 à 15:31
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more