2009-10-23 4 views
2

나는이을 최대한 활용

처럼 보이는 문자열 "환자 이름, 문서 이름, 환자 ID, 뭔가 다른"

내가 추출 할이 이들 각각을 변수에 넣으십시오. var1은 "Patient Name"과 같습니다. var2는 "Doc name"등과 같습니다. instr과 mid를 사용합니다. 가장 좋은 방법은 무엇입니까?

+0

이 VB.NET 또는 VBA입니까? – Buggabill

+1

"Mid and Instr in vb.net에서의 최상의 사용"은 NONE입니다. 사용하지 마십시오. 이제까지. 대신 .Substring(), .IndexOf() 및 해당 친족을 사용하십시오. –

+0

물건은 내가 몹시 익숙해 져서 사용하기 쉽기 때문에 내가 바꿀 것이라고 생각하지 않는다! –

답변

7

는 분할 기능을 사용 할 수있는 가장 좋은 방법은 여기를해야 할 몇 가지 VBA 코드의 Microsoft.VisualBasic.Strings 모듈의 잘 알려진 메서드 (예 : InStr 및 Mid)는 C# 백그라운드에서 System.String의 메서드에 익숙하거나 솔루션을 이식성있게 만들려는 경우 일 수 있습니다 (예 : InStr 및 Mid). Mono에서도 실행).

첫 번째 문자의 인덱스가 0이 아니기 때문에 이러한 방법을 사용하는 것이 C# 프로그래머에게는 혼란을 줄 수 있지만 실제로는 큰 장점이 있습니다. 옵션 비교 설정을 사용하지 마십시오! 기본 Option Compare Binary를 사용하면 특정 메서드가 System.String 클래스의 해당 메서드보다 훨씬 빠릅니다. 이 경우 이진 비교를 수행하는 반면 다른 메서드는 문화적으로 민감한 비교를 수행해야하기 때문입니다.

마지막으로 Nothing (null)을 VB.NET에서 전달하기 때문에 이러한 모든 메서드는 예외를 throw하지 않습니다. Nothing은 빈 문자열과 동일합니다. 마이크로 소프트는 현재 닷넷 플랫폼의 향후 릴리스에서이 기능들을 삭제할 계획을 갖고있다. (아무도 다른 릴리스에서 살아남는 것에 대해 확신 할 수는 없지만)

VB.NET의 '고유 한'문자열 함수와 System.String 클래스에서 제공하는 문자열의 장점과 장점을 잘 살펴보십시오. Visual Basic 배경을 가진 VB.NET 프로그래머에게는이 '고유'기능을 사용하는 것이 문제를 해결하는 자연스러운 방법 일 수 있으며, 일반적으로 성능에 대해 크게 걱정할 필요가 없습니다.

+1

+ 답변 모두 +1 ... :-) – Buggabill

2

레거시 VB 함수 대신 .NET Framework의 일부인 문자열 메서드를 사용하는 것이 좋습니다.

String.Split() 당신이 원하는대로 99 %의 길을 얻을 것입니다.

Dim txt as String = "Patient Name, Doc Name, Patient ID, something else" 
Dim x as Variant 
Dim i as Long 

x = Split(txt, ",") 
For i = 0 To UBound(x) 
    Debug.Print x(i) 
Next i 

을 그리고 VB.Net에서 :

Dim txt as String = "Patient Name, Doc Name, Patient ID, something else" 
Dim split As String() = txt.Split(",") 
    For Each s As String In split 
     If s.Trim() <> "" Then 
      Console.WriteLine(s) 
     End If 
    Next s 
+0

내가 어떻게 사용합니까? –

1

유일한 이유를을 피하기 위해 -

관련 문제