2014-03-24 2 views
0

문자열에서 특정 문자열을 찾을 수 있습니까,하지만 여기에 질문해야합니다어떻게 내 전체 질문 제목이 너무 긴

이 어떻게 공간과 특별 회계 문자열에서 특정 문자열의 모든 인스턴스를 찾을 수 있습니까 하위 문자열의 양쪽에 잠재적으로있는 문자

의미는 무엇입니까. VB.Net에서 SQL 코드 포맷 지원 프로그램을 작성 중입니다. 이 프로그램은 필자가 진정으로 쓰여진 SQL을 추적 할 때 도움이 될 것입니다. 예를 들어 A는 (여기에서 구문 오류를 무시하세요, 저는 SQL에 나쁜 코드를을 writting 잘 모르겠습니다) :

if exists(
    select * 
    from dbo.table 
    where field1 = (if exists (select field1 
           from dbo.table1 
           where field2 = '123') 
        select field1 from table2) 

내 프로그램은 아직 초기 단계이다. 나는 이미 대부분의 키워드를 확인하고 적절한 경우 형식으로 작성하는 코드를 작성했습니다. 따라서 위의 잘못된 코드 예제에서는 Select가 모두 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가 키워드이므로 SEnd라는 단어로 바꿉니다. 이 중 많은 경우에 더 큰 단어 앞에 작은 단어를 넣음으로써 이것을 설명 할 수 있습니다. Google 시스템에서 사용자 메시지에 단어가 나타나는 횟수 때문에 키워드로 보내기를 추가했습니다.

On, If 또는 Go와 같은 단어를 설명하지 못하는 것 같습니다. 나는 "Go", "On", "Go", "On"등을 검색하는 것을 고려했습니다. Go가 첫 번째 단어가 될 때 ... 또는 유일한 경우가 있습니다 ...

내가 필요로하는 VB.Net은 주어진 부분 문자열 (예 : If)과 같은 모든 인스턴스의 문자열을 검색하는 것을 의미합니다. 문자열의 첫 번째 단어인지 확인합니다. 공백이나 특수 문자 조합 (또는 다른 문자와 밑줄 등으로 둘러싸이지 않음)으로 둘러 쌉니다. 내 요구 사항을 충족시키는 항목을 업데이트하고 나머지는 그대로 두겠습니다.

이 일을하면 도움이 될 수 있습니다.

+4

_ "내가 SQL에 나쁜 코드를 작성하기에 좋은하지 않다"_ 무엇 유감 ! –

+0

아마도 split()과 join()을 사용하여 단어 배열을 반복 처리하고 각 단어에 대해 개별적으로 작업하십시오. – fnostro

+0

'where field2 = '와 같은 경우 어떻게 될까요? "OK"'를 선택하십시오. 간단한 검색과 대체가 모든 경우에 작동하지는 않습니다. 신뢰할 수있는 알고리즘은 몇 가지 기본 구문 분석을 수행해야합니다. –

답변

1

SQL 코드 작성 지원 프로그램을 작성 중입니다.

기존 SQL 구문 분석기로 시작하는 것이 좋습니다.

피트 Sestoft의 우수한 Programming Language Concepts book 소개합니다

오픈 소스 Irony projectSQL grammar 샘플을 포함하고 제 3 장에서는 마이크로-SQL에 대한 렉서와 파서 사양을 작성 포함한 기본 구문 분석.

좋아하는 검색 엔진을 사용하여 다른 사람을 찾으십시오.

내가 필요한 것은 VB입니다.주어진 문자열

이의 모든 인스턴스에 대한 문자열을 검색하는 순 수단이 달성의 여러 가지 방법은 다음과 같습니다 단어로

  1. 분할 문자열 다음 인스턴스에 대한 해당 단어를 검색 할 수 있습니다.
  2. 상태 기계를 사용하여 문자열을 반복하고 공백 뒤에 단어를 확인하십시오. 옵션 2와

당신은 인용 문자열을 처리하고 각 단어에 대한 인덱스를 유지, 여기에 F #에서 간단한 예제입니다 수 있습니다 http://fssnip.net/f6

+0

자세한 답변 해 주셔서 감사합니다. 당신이 언급 한 책을 연구하겠습니다. 비 -SQL 코드를 writting 할 때 나는 아직도 내 밑에 서있다. toppics를 조금 바꾸어 주셔서 감사합니다.하지만 C# training이나 VB.Net을 사용하는 것이 좋을까요? –

+0

@ JaridLawson 파싱에 관심이 있으시면 F #을 살펴 보시기 바랍니다. C#과 VB.Net의 주요 차이점은 구문이며 기능은 거의 동일합니다. 거기에 더 많은 C# 샘플 및 작업이있는 경향이 있습니다. –

관련 문제