2014-09-22 3 views
2

현재 vb.net express 2013에서 작업 중입니다. Windows 양식 응용 프로그램을 사용하고 있습니다. 나는 마지막 숫자에서 세 번째 숫자를 그 숫자 뒤의 다른 숫자를 얻지 않고 숫자 열에서 끌어 올 필요가있다. 나는이 웹 사이트에서이 질문을 찾았습니다. Get last 5 characters in a string은 내가 필요한 것에 아주 가깝습니다. 그러나이 코드는 마지막 5 문자를 모두 가져오고, 코드에서 다른 숫자없이 마지막으로 3 번째 문자가 필요합니다. 예를 들어, 숫자 "917408"을 가져 가면 "4"를 선택해야합니다. 이것으로 원래의 긴 숫자에서 어떤 숫자가 반환되는지를 기반으로 IF 문을 생성 할 것입니다.vb.net의 숫자 문자열에서 특정 번호를 가져 오기

 'Ghost Floor 
    If CBJob1.Visible Then 
     If Shear1.Text >= 3 Then 
      Dim ghostshear1 As String = Shear1.Text 
      Dim len = ghostshear1.Length 
      Dim result = ghostshear1.Substring(len - 3, 1) 
      MsgBox(result) 
     End If 
    End If 
+3

그 대답을보고 [substring] (http://msdn.microsoft.com/en-us/library/system.string.substring (v = vs.110) .aspx 인수를 수정하면됩니다.) 필요에 따라 약간 수정하십시오. – Plutonix

+2

문자열의 네 번째 숫자는'myString.Chars (3)'또는'myString.Substring (3,1)'입니다. [here] (http://msdn.microsoft.com/en-us/library/aka44szs (v = vs.110) .aspx) 및 [here] (http://msdn.microsoft.com/en-us)를 참조하십시오. ///library/system.string.chars(v=vs.110).aspx) –

+1

'LEFT (RIGHT (string, 3), 1)' – RBarryYoung

답변

2

로버트 하비, 당신은 당신의 하위 문자열 인수를 변경해야 위의 의견에 지적 :

편집 : 변화하는 문자열에 대한 @ 영업 이익의 의견에 따라 6 사이 7 자 :

Dim strValue As String = "917408" 
    Dim newValue As String 

    newValue = strValue.PadLeft(7, "0").Substring(4, 1) 
    MessageBox.Show(newValue) 
+0

9 개월에서 10, 11, 12 개월로 갈 때, 지난 3 개월 동안 내 번호의 길이가 바뀌기 때문에 실제로 작동하지 않습니다.이 코드를 시도하고 thresh hold를 교차 할 때 내게 잘못된 번호를 알려 주면. 뒤에서 선택하는 것이 필요합니다. – Cheddar

+0

@ 체다 : 나의 개정판을보십시오. PadLeft (0을 사용)를 추가하여 항상 7자를 보장합니다. 이 경우 길이 검사는 필요하지 않습니다. padleft 접근법에 대해서는 – SnookerC

+0

+1. –

3

문자열의 끝에서부터 세는 특정 위치의 문자를 추출하려면 문자열의 길이를 알아야합니다. 이것은 정말 쉽습니다. 당신이 문자열이 3 자 미만의

솔루션의 핵심은입니다 경우에 음의 위치를 ​​참조 피하기 위해 수표를 추가해야하므로

Dim test = "917408" 
if test.Length >= 3 then 
    Dim len = test.Length 
    Dim result = test.Substring(len - 3, 1) 
End if 

지금, 당신은, 끝에서 3 번째 문자를 필요 문자열 클래스 두 개의 매개 변수를 취 Substring 방법 :

  • 출발점 (렌을 - 3)
  • (귀하의 경우 1에서) 반환 할 문자의 수
+0

이 코드를 테스트하려고합니다. SQL 테스트 서버에 정크 데이터를 넣고 작동하는지 여부를 알려줍니다. – Cheddar

+0

이 코드는 작동 할 것이고, 유일한 문제는이 값이있는 텍스트 상자가 있고 텍스트 상자에 하위 문자열을 사용할 수 없다는 것입니다. 게시 할 코드를 확인하십시오. – Cheddar

+1

If Shear1.Text.Length> = 3 Then'. WinForms 또는 WPF 또는 TextBox? – Steve

4

또 다른 방법은 문자열을 정수로 변환 한 다음 100s 열 (모든 숫자에서 세 번째 마지막 열 = 100)을 가져 오는 것입니다.

Dim strValue As String = "917408" 
Dim number As Int32 = Convert.ToInt32(strValue) 
Dim hundredsDigit As Int32 
hundredsDigit = (number/100) Mod 10 

숫자가 이미 실제 숫자 (문자열이 아님) 인 경우이 값으로 시작하면 문자열로 변환하지 않아도됩니다.

+0

이 코드가 작동하는 것 같습니다. 감사. – Cheddar

+0

문제 없습니다. 100보다 작은 숫자를 보호하기 위해 오류를 검사하는 것을 잊지 마십시오 (문제가있는 경우). –

관련 문제