2010-04-08 5 views
0

J'ai une chaînechaîne correspondante

String mainString="///BUY/SELL///ORDERTIME///RT///QTY///BROKERAGE///NETRATE///AMOUNTRS///RATE///SCNM///"; 

Maintenant, j'ai encore des chaînes

String str1= "RT"; 

qui devrait être égalée que par RT qui est sous-chaîne de chaîne mainString mais pas avec ORDERTIME qui est sousChaîne aussi chaîne mainString.

String str2= "RATE" ; 

Et RATE (str2) devrait être mis en correspondance avec RATE qui est sous-chaîne de chaîne mainString mais pas avec NETRATE qui est également sous-chaîne de chaîne mainString.

Comment pouvons-nous faire cela?

+0

* Pourquoi * devrait-il correspondre RT, mais pas OrderTime? * Pourquoi * devrait-il correspondre à RATE mais pas à NETRATE? –

+0

Que voulez-vous dire par "apparié"; voulez-vous juste vérifier si les cordes sont présentes? –

+0

@Jon Skeet, Monsieur parce que je veux savoir où dans une chaîne de correspondance exacte est fait? – Harikrishna

Répondre

0

Je ne sais pas cela fonctionnera à chaque fois ou not.But je l'ai essayé et il fonctionne en ce moment dans cette correspondance de chaîne. Je veux savoir si c'est ok ou pas, s'il vous plaît donnez-moi une suggestion.

str1 = str1.Insert(0, "///"); 
str1=str1.Insert(str1.Length,"///"); 

bool Result = mainString.Contains(str1); 
2

match contre "///RT///" et "///RATE///".

+0

@Marcelo Cantos, j'ai mis à jour la question, il s'est trompé. – Harikrishna

+0

Cool, j'ai supprimé la remarque supplémentaire. –

0

pour autant que je comprends votre question, vous voulez faire correspondre une chaîne entre /// comme délimiteurs.
si vous cherchez str il vous suffit de faire
Regex.Match(mainString, "(^|///)" + str + "(///|$)");

0

Cela pourrait vous donner quelques indices - pas où la qualité du code quasi-réel, et seulement un travail de 5 minutes à venir avec cette solution de mauvaise qualité, mais ne faites ce que vous avoir besoin. ça sent beaucoup être prévenu.

using System; 
using System.Collections.Generic; 
using System.Collections; 
using System.Linq; 
using System.Text; 

namespace test { 
    class Program { 
     static void Main(string[] args) { 
      String mainString="//BUY/SELL//ORDERTIME//RT//QTY//BROKERAGE//NETRATE//AMOUNTRS//RATE//SCNM//"; 


      Hashtable ht = createHashTable(mainString); 



      if (hasValue("RA", ht)) { 
       Console.WriteLine("Matched RA"); 
      } else { 
       Console.WriteLine("Didnt Find RA"); 
      } 


      if (hasValue("RATE", ht)) { 
       Console.WriteLine("Matched RATE"); 
      } 


      Console.Read(); 

     } 


     public static Hashtable createHashTable(string strToSplit) { 
      Hashtable ht = new Hashtable(); 
      int iCount = 0; 

      string[] words = strToSplit.Split(new Char[] { '/', '/', '/' }); 
      foreach (string word in words) { 

       ht.Add(iCount++, word); 
      } 

      return ht; 
     } 
     public static bool hasValue(string strValuetoSearch, Hashtable ht) { 

      return ht.ContainsValue(strValuetoSearch); 

     } 

    } 

} 
+0

String.Split (char []) se divise sur * tout * de ces personnages - il ne traite pas comme une séquence * * de caractères. –

+0

Cela fait un Hashtable travailler avec les différents éléments de la chaîne enought à « trouver » les valeurs – jpg

+0

je l'ai dit isnt assez – jpg

0

Qu'en est-il de Linq to Object? Je n'ai pas de VS près de moi donc je ne peux pas le tester, mais ça devrait être quelque chose de similaire à ça.

Questions connexes