我充滿問題的標題太長,但這裏要問:如何查找特定的子字符串中的
如何找到特定字符串的所有實例的字符串佔空間和特殊文字可能是在子
我的意思是這兩側。我正在VB.Net中編寫一個SQL代碼格式化幫助程序。這個程序將幫助我跟進真正的寫SQL。一種實例(並請在此處忽略語法失敗,我不是在SQL書面方式不好的代碼好):
if exists(
select *
from dbo.table
where field1 = (if exists (select field1
from dbo.table1
where field2 = '123')
select field1 from table2)
我的計劃還處於早期階段。我已經確定了大部分關鍵字,並編寫了將它們置於正確格式的代碼。所以在上面的錯誤代碼示例中,所有選擇都將是Select。要做到這一點,我創建的陣列形式的關鍵詞列表,並在下面的函數使用這個數組:
Private Function FindAndReplace(ByVal findWhat As String, _
ByVal replaceWith As String, ByVal focusLine As String) As String
focusLine = Microsoft.VisualBasic.Strings.Replace(focusLine, findWhat, _
replaceWith, 1, -1, Constants.vbTextCompare)
Return focusLine
End Function
好消息是,這個作品真的很好用喜歡選擇的話。像If,Go,On和End這樣的詞語更具挑戰性。如果我有發送單詞,它將用單詞SEnd替換它,因爲End是一個關鍵字。在許多這樣的情況下,我可以通過將較小的單詞放在較大的單詞之前來解釋這一點。我添加了「發送」作爲關鍵字,因爲我們的系統在用戶消息中出現了單詞的次數。
我似乎無法解釋像的話,如果,或去。我認爲搜索「去」,「開」,「)去」,「在(」等,但有些時候,走的是將要上線的第一個字......或者只。
我需要的是一個VB.Net的手段,爲一個給定的子字符串的所有實例(如If)搜索一個字符串。我想我會檢查它是否是字符串中的第一個單詞,或者看它是否是包圍空間或特殊字符的任何組合(或不包括其他字母和下劃線等),我會更新那些符合我的要求,並保留其他人的獨立性。做到這一點,我真的可以使用一些幫助。
_「我不擅長在SQL編寫惡意代碼」 _真可惜! –
也許使用split()和join()並迭代單詞數組,並分別對每個單詞執行操作。 – fnostro
「where field2 ='請選擇」OK「''?簡單的搜索和替換在任何情況下都不起作用。一個可靠的算法將不得不做一些基本的語法分析。 –