2010-10-04 2 views
0

J'essaie d'analyser une chaîne et dans certains cas, il y a un extra "- [un certain nombre]" à la fin. par exemple,comment détecter les chaînes qui se terminent par un nombre

au lieu de montrer

Technologist 

il montre

Technologist - 23423 

je ne veux pas simplement vérifier ou fendu sur « - » parce qu'il ya d'autres noms qui ont un « - » dans les

peut-on penser d'une manière propre de supprimer ce bruit supplémentaire afin:

Technologue - 23423 décide de Technologue

+2

Est-ce 'Technologue - 2 - 12345' résolution de' Technologue - 2' ou 'Technologue'? –

+0

@Michael Petrotta - Je ne vais pas avoir ce cas (parce que je connais mes données) mais pour être complet: Si j'avais Technologue-Spécialiste - 234234 je voudrais le résoudre à Technologue-Spécialiste. Je n'aurais jamais deux ensembles de bruit nombre à la fin comme dans votre exemple – leora

+0

Donc, supprimer toutes les données après la dernière combo espace-tiret, si ce combo est présent? Ou peut-être supprimer toutes les données après le dernier tiret, et l'espace-trim le résultat. –

Répondre

2

Cela ressemble à un cas d'expressions régulières, telles que @ "- \ d + $" dans ce cas. Exemple de code:

using System; 
using System.Text.RegularExpressions; 

class Test 
{ 
    static void Main() 
    { 
     Tidy("Technologist - 12345"); 
     Tidy("No trailing stuff"); 
     Tidy("A-B1 - 1 - other things"); 
    } 

    private static readonly Regex regex = new Regex(@"- \d+$"); 

    static void Tidy(string text) 
    { 
     string tidied = regex.Replace(text, ""); 
     Console.WriteLine("'{0}' => '{1}'", text, tidied); 
    } 
} 

Notez que ce moment ne pas les nombres négatifs sur place. Si vous le vouliez, vous pourriez utiliser

new Regex(@"- -?\d+$"); 
+0

comment irais-je vérifier si j'ai besoin de faire un rangement? Je suppose que je peux appeler Tidy sur tous mes disques et ça ne ferait rien sur les autres. – leora

+0

@ooo: Yup, et ce serait plus simple que de vérifier si vous aviez besoin de ranger, et de le faire seulement si nécessaire. –

0

Essayez cette expression régulière:

var strRegex = @"\s*-\s*\d+$"; 

var regex = new Regex(strRegexs); 

var strTargetString = "Technologist - 23423"; 

var res = myRegex.Replace(strTargetString, ""); 

Cela fonctionne sur les chaînes suivantes (toutes les évalue à Text):

Text - 34234 
Text -1 
Text -  342 
Text-3443 
Questions connexes