2017-07-08 122 views
-1

我有一個獲取特定SQL查詢參數的應用程序。如何獲取字符和空格之間的字符

我怎麼會得到之間的字符@空間

實施例:Select Name From SomeTable Where [email protected] Group By Name

所以輸出將是:ID

我使用下面的代碼,但它僅@後提取的字符。在上面的例子中,它提取:ID組按名稱

strParamName = sqlQuery.Substring(sqlQuery.IndexOf('@') + 1); 
+5

在我們回答這個問題之前,你能解釋一下爲什麼**你需要這樣做嗎? – mjwills

+1

從你的例子看來,你做錯了什麼。你不應該這樣獲取SQL參數的名字。 –

+0

你的查詢是'string'還是'SQLCommand'? –

回答

1

這可能是你的情況下錯誤的做法。

您還可以通過Regex實現這一目標:

string sql = "Select Name From SomeTable Where [email protected] Group By Name"; 

string result = Regex.Match(sql, "(?<[email protected])[^ ]+").Value; 

模式(?<[email protected])[^ ]+意味着:

(?<[email protected]) - 爲@性格積極的回顧後,

[^ ]+ - 一個和無限的時間之間的匹配非空白字符()。

+0

謝謝。我選擇這個,因爲他詳細解釋了它。 – Zhyke

2

嘗試以下操作:

  string sqlQuery = "Select Name From SomeTable Where [email protected] Group By Name"; 
      int startIndex = sqlQuery.IndexOf('@') + 1; 
      int length = sqlQuery.Substring(startIndex).IndexOf(' '); 
      string strParamName = sqlQuery.Substring(startIndex, length); 
1

這是一種奇怪的,你需要做到這一點。所以我警告你,你可能做錯了什麼。

不管怎麼說,這是一個使用正則表達式的解決方案:

var match = Regex.Match(yourSQLString, "^[email protected](\\w+) .+$"); 
var result = match.Groups[1].Value; 
相關問題