Соответствие строки - PullRequest
       7

Соответствие строки

0 голосов
/ 08 апреля 2010

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

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.

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

Ответы [ 5 ]

2 голосов
/ 08 апреля 2010

Матч против "///RT///" и "///RATE///".

0 голосов
/ 09 апреля 2010

А как насчет 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 рядом со мной, поэтому я не могу проверить это, но должно быть что-то похожее на это.

0 голосов
/ 08 апреля 2010

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

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

bool Result = mainString.Contains(str1);
0 голосов
/ 08 апреля 2010

Это может дать вам некоторые подсказки - не близко к реальному качеству кода, и всего лишь 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 голосов
/ 08 апреля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...