2010-03-28 6 views
0

J'ai une chaîne comme 20090101 et je veux le comparer avec ????01??.Chaîne comparer en C#

if (input == "----01--") { .... } 

Comment puis-je comparer les 5ème et 6ème caractères avec "01"?

+1

plus d'info S'il vous plaît. – kenny

+0

Je veux dire que si ma contribution est la même avec **** 01 **. Par exemple: if (input == "20090101") {...} Dans ce comparatif, 01 est plus important pour moi. Comment puis-je spécifier 01 char? merci – Irgat

+0

Cela ressemble étrangement à une date. Essayez-vous de faire correspondre une date qui représente un jour de janvier de n'importe quelle année? –

Répondre

3

vous devez créer une expression regex. pour vérifier si le 4ème et 5ème octet est 01, vous pouvez écrire

var r = new Regex("^.{4}01$"); 
if(r.Match(str) ...) ... 
+0

Le '$' ne devrait probablement pas être là. –

+0

Que diriez-vous de '@"^\ d {4} 01 \ d \ d $ "'? –

11

Mise à jour: Après avoir vu votre commentaire, je pense que vous devez analyser la chaîne comme DateTime:

string s = "20090101"; 
DateTime dateTime; 
if (DateTime.TryParseExact(s, "yyyyMMdd", null, DateTimeStyles.None, out dateTime)) 
{ 
    if (dateTime.Month == 1) 
    { 
     // OK. 
    } 
} 
else 
{ 
    // Error: Not a valid date. 
} 
+0

Oui, merci beaucoup – Irgat

5

Je pense que cela peut être ce que vous voulez:

if (input.Substring(4, 2) == "01") 
{ 
    // do something 
} 

Cela une sous-chaîne à deux caractères d'entrée (à partir de 5 caractères) et le comparer à "01".

+0

Oui, c'est ma réponse merci – Irgat

+0

Cela lèvera une exception si l'entrée est inférieure à 6 caractères. –

0

Comme Bauer a dit que vous pouvez utiliser les fonctions de chaîne, vous pouvez également convertir la chaîne de Char tableau et de travailler avec elle carboniser par char