如何將字符串「網 金額」匹配(淨和金額之間可以有任意數量的空格,包括零)與net amount
?這兩個詞之間字符串匹配
空間可以是任何空白和兩個串的精確匹配應該在那裏。但淨金額(第一個帶空格的字符串)可以是任何字符串的一部分,如Rate Net Amount
或Rate CommissionNet Amount.
匹配應該是不區分大小寫。
如何將字符串「網 金額」匹配(淨和金額之間可以有任意數量的空格,包括零)與net amount
?這兩個詞之間字符串匹配
空間可以是任何空白和兩個串的精確匹配應該在那裏。但淨金額(第一個帶空格的字符串)可以是任何字符串的一部分,如Rate Net Amount
或Rate CommissionNet Amount.
匹配應該是不區分大小寫。
如果你只是要檢查是否存在匹配,使用IsMatch:
using System;
using System.Text.RegularExpressions;
class Program
{
public static void Main()
{
string s = "Net Amount";
bool isMatch = Regex.IsMatch(s, @"Net\s*Amount",
RegexOptions.IgnoreCase);
Console.WriteLine("isMatch: {0}", isMatch);
}
}
更新:在您的意見,它聽起來就像你想要的字符串搜索只在運行時才知道。你可以嘗試動態構建正則表達式,例如這樣的事情:
using System;
using System.Text.RegularExpressions;
class Program
{
public static void Main()
{
string input = "Net Amount";
string needle = "Net Amount";
string regex = Regex.Escape(needle).Replace(@"\ ", @"\s*");
bool isMatch = Regex.IsMatch(input, regex, RegexOptions.IgnoreCase);
Console.WriteLine("isMatch: {0}", isMatch);
}
}
@馬克拜爾斯,非常感謝你先生....而我現在真的是你的粉絲。 – Harikrishna 2010-04-02 12:25:55
@馬克·拜爾斯先生,如果我們想匹配像買入賣出和買入賣出這樣的字符串,那麼我們該怎麼做呢? – Harikrishna 2010-04-03 10:08:41
@Harikrishna:對於這個問題,恕我直言,這太離譜了。你應該創建一個新的問題。請記住包括非常明確的規格,示例輸入,示例輸出。當你想要比賽成功,並且你希望比賽失敗的時候,包括兩個例子。試圖首先自己解決問題,並將問題包含在問題中。顯示你的代碼失敗的地方和方式的例子。 – 2010-04-03 10:58:01
您可以使用正則表達式:Net.*Amount
。
using System.Text.RegularExpressions;
Regex regex = new Regex("Net.*Amount");
String s = "Net Amount";
Match m = emailregex.Match(s);
// Now you have information in m about the matching string.
@Anders Abel,它會匹配所有以Net開頭的單詞嗎? – Harikrishna 2010-04-02 11:17:58
是的,它會如果你使用。之前 *。點匹配任何字符,星號表示任何次數。如果您使用「Net + Amount」,則只有在單詞之間至少有一個空格(並且沒有其他字符)時纔會匹配。 – 2010-04-02 11:20:22
使用正則表達式。看一看在System.Text.RegularExpressions
命名空間,即Regex
類:
var regex = new RegEx("net(\s+)amount", RegexOptions.IgnoreCase);
// ^^^^^^^^^^^^^^^
// pattern
參數字符串就是所謂的正則表達式模式。正則表達式模式描述了什麼字符串會匹配它。它們用專門的語法表達。谷歌爲regular expressions
,你應該找到大量有關正則表達式的信息。
用例:
bool doesInputMatch = regex.IsMatch("nET AmoUNT");
// ^^^^^^^^^^^^^^^^^
// test input
您可以使用
Regex.IsMatch(SubjectString, @"net\s*amount", RegexOptions.Singleline | RegexOptions.IgnoreCase);
+1考慮區分大小寫。請注意,'RegexOptions.Singleline'在這裏是不必要的 - 它隻影響點'.',並且在正則表達式中沒有點。 – 2010-04-02 12:22:31
請更具體 – Andrey 2010-04-02 11:16:38
你是什麼意思「匹配」?你只是想檢查一場比賽是否存在?你想要比賽的指數?你想用別的東西替換這個字符串嗎? – 2010-04-02 11:18:15
@Mark Byers,先生..我想檢查一下匹配是否存在? – Harikrishna 2010-04-02 11:20:39