2017-12-28 19 views
-1

다음 문자열이 있습니다. "USB SERIAL PORT (COM6)"이 COM6을 가져오고 싶습니다. 마지막 문자에서 3 문자를 가져 오기위한 하위 문자열 vb.net

내가 그런 종류의

string.substring(3, string.length - 1) 

뭔가를 사용하려고하고있는 코드입니다. Havent는 무엇이든을 얻을 수 있었다.

+0

연구 워드 프로세서 : 우리가 마지막 브라켓 포함하지 않기 때문에 문자열에 대한 길이는 브래킷 인덱스 덜 하나입니다 en-us/library/aka44szs (v = vs.110) .aspx) 간단한 예제가 작동하도록하십시오. 당신은 항상 이것을해야합니다. 그냥 추측하지 마십시오. 특히, startIndex가 3 일 수있는 이유는 무엇입니까? –

+0

@AndyG 좋아요, 괄호의 색인을 찾아서 거기에서 일해야합니까? – TheNoob

+0

예! 그러한 노력을 입증 할 경우 적어도 더 많은 답변을 얻을 수 있습니다. –

답변

1

당신이 경우에, 당신의 문자열 형식을 변경 일일 인덱스로 (의 마지막 발생을 사용하여 더 나을 것, 또는 COM6이 (COM10) 이상 :

Dim lastBra as Integer = myString.LastIndexOf("("c) 
Dim lastKet as Integer = myString.LastIndexOf(")"c) 

Dim subs as String = myString.Substring(lastBra + 1, lastKet - lastBra - 1) 

그것은 lastBra + 1의 우리 때문에 열기 괄호 뒤에있는 문자를 시작으로 사용하십시오. [문자열] (https://msdn.microsoft.com/에 대한

enter image description here

+0

마지막 줄을 'myString.Substring (lastBra + 1, lastKet - lastBra)'로 변경하십시오. – TheNoob

+0

동의하지 않습니다. 스크린 샷에서 편집하십시오. 'abc (def)'문자열에 대해 lastBra는 4가 될 것이고, lastKet은 8이 될 것이고, 우리는 길이가 5 인 문자열을 원하지만 lastKet-lastBra의 제안은 8-4입니다. 이것은 4가 아니라 3입니다 (가정 VB는 1 기반 인덱스 모드입니다. 0 인덱스 모드 인 경우이 숫자는 모두 1로 변경되지만 전체 수학은 동일합니다. –

+0

예! 죄송합니다. lastBra에 +1을 더하고있었습니다. – TheNoob