簡體   English   中英

字符串匹配

[英]String Matching

我有一個弦

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

現在我有另一個琴弦

String str1= "RT";

僅應與RT它是字符串mainString子字符串) mainString而不能與ORDERTIME它也是字符串mainString子字符串) mainString

 String str2= "RATE" ;

RATE (STR2)應與匹配RATE是串子mainString但與NETRATE這也是串串mainString

我們怎么做?

"///RT///""///RATE///"匹配。

據我了解您的問題,您想將///之間的字符串作為分隔符。
如果您尋找str您只需要做
Regex.Match(mainString, "(^|///)" + str + "(///|$)");

這可能會為您提供一些線索-幾乎沒有真正的代碼質量,此劣質解決方案僅需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);

        }

    }

}

我不知道它是否每次都能工作,但是我已經嘗試過了,現在在這種字符串匹配中它可以工作。 我想知道是否可以,請給我建議。

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

bool Result = mainString.Contains(str1);

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,因此無法對其進行測試,但是應該與此類似。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM