2010-04-08 3 views
0

У меня есть строкаСтрока соответствия

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

Теперь у меня есть еще строки

String str1= "RT"; 

, которые должны быть согласованы только с RT который подстроку строки mainString, но не с ORDERTIME, который также подстроку строка mainString.

String str2= "RATE" ; 

И RATE (str2) должен быть согласован с RATE который является подстрокой строки mainString, но не с NETRATE который также подстрока строки mainString.

Как мы можем это сделать?

+0

* Почему * должен соответствовать RT, но не ЗАКАЗАТЬ? * Почему * он должен соответствовать RATE, но не NETRATE? –

+0

Что вы имеете в виду под «соответствием»; вы просто хотите проверить, присутствуют ли строки? –

+0

@Jon Skeet, Sir, потому что я хочу знать, где в строке точное совпадение сделано? – Harikrishna

ответ

0

Я не знаю, что это будет работать каждый раз, или not.But я попробовал это, и она работает прямо сейчас в этой строке соответствии. Я хочу знать, хорошо это или нет, пожалуйста, дайте мне предложение.

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

bool Result = mainString.Contains(str1); 
2

Совпадение от "///RT///" и "///RATE///".

+0

@Marcelo Cantos, я обновил вопрос, он ошибся. – Harikrishna

+0

Прохладный, я удалил дополнительное замечание. –

0

Насколько я понимаю ваш вопрос, вы хотите совместить строку между /// как разделители.
если вы посмотрите на str вы просто должны сделать
Regex.Match(mainString, "(^|///)" + str + "(///|$)");

0

Это может дать вам некоторые подсказки - нет, где рядом с реальным качеством кода, и только 5 минут работы, чтобы прийти с этой дрянной решение, но это делать то, что вы необходимость. это пахнет, многие будут предупреждены.

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 []) разбивает на * любые * этих символов - он не воспринимает его как * последовательность символов. –

+0

он получает рабочую хеш-таблицу с отдельными элементами из строки достаточно, чтобы «найти» значения – jpg

+0

Я сказал, что не очень – jpg

0

А как насчет Linq to Object?

String mainString="///BUY/SELL///ORDERTIME///RT///QTY///BROKERAGE///NETRATE///AMOUNTRS///RATE///SCNM///"; 
String searchTerm = "RT"; 
String[] src = mainString.split('///'); 
var match = from word in src where 
      word.ToLowerInvariant() == searchTerm.ToLowerInvariant() 
      select word; 

У меня нет VS рядом со мной, поэтому я не могу его протестировать, но это должно быть что-то похожее на это.

Смежные вопросы