2014-12-17 3 views
0

배열이나 문자를 고정 길이로 파싱 할 필요가 있지만 문자 또는 숫자의 조합을 가질 수 있습니다. 내 50 자리 배열은 다음과 같습니다. NL1NAMEOFCO-B032144221111000100600000-A35499001배열 구문 분석

이 배열은 Google 제품 내의 광범위한 설정 조합을 나타냅니다. 배열에서 모든 참조 지정자를 추출해야합니다. 첫 3 문자는 특정 모델 NL1을 나타내며, 다음 8 문자는 NAMEOFCO를 나타냅니다. '-'는 항상 같은 위치에 있습니다. B (숫자 13)는 일부 값 등을 나타냅니다. 또한 일부 값은 2 자리로 표시됩니다. 숫자 20 & 21 (값 22를 저장함)은 몇 가지 특정 설정을 나타냅니다.

이제 쯤이면 아이디어를 얻을 수 있습니다. 나는 배열을 분석하고 다음 코드를 사용하여 내가 원하는 값을 추출 할 수 있습니다 :이 문제없이 작동

String Company = ConfigCode[3].ToString() + 
       ConfigCode[4].ToString() + 
       ConfigCode[5].ToString() + 
       ConfigCode[6].ToString() + 
       ConfigCode[7].ToString() + 
       ConfigCode[8].ToString() + 
       ConfigCode[9].ToString() + 
       ConfigCode[10].ToString(); 

을하지만, 나에게이 일을 쉬운 방법이 있어야한다. 나는 다음과 같은 것이 효과가있을 것이라고 생각했지만, 그렇지는 않았다.

String Company = ConfigCode[3..10].ToString(); 

누군가가 내게 왜 작동하지 않는지 그리고 필요한 정보를 추출하는 더 좋은 방법이 무엇인지 설명 할 수 있습니까?

감사합니다.

+4

string.Substring (startIndex, length)은 약간 더 멋지다. – idstam

답변

2

나는 String.Substring 방법을 찾고 있습니다. 당신이 찾고있는 오버로드 된 메소드의 서명은 다음과 같습니다

public string Substring(
    int startIndex, 
    int length 

)

그것에 대한 문서는 여기에 있습니다 : http://msdn.microsoft.com/en-us/library/aka44szs(v=vs.110).aspx

는 예를 들어, 회사 이름은 설명이가는 (것 8의 문자 길이)의 :

string CompanyName = configCode.Substring(3, 8);

+0

길이가 8이 아니십니까? 코드는 6을 나타내지 만 질문은 8 개의 문자를 언급합니다. – ryanyuyu

+0

@ryanyuyu 좋은 잡기, 나는 코드로 가고 있었다 :] 나는 업데이트 할 것이다 – Saggio

+0

고마워! 하위 문자열은 내가 찾고있는 것입니다. 또한 문제의 실수를 바로 잡았습니다. 모두에게 다시 한 번 감사드립니다! – MTH

0

마찬가지로 이전에 언급, 당신은 c를 과 같이 하위 문자열 확장 방법을 사용하십시오

String Company = ConfigCode.Substring(3, 8); 

ConfigCode[3]에서처럼 square-bracket operators for strings은 실제로 특정 인덱스에 개별 문자를 반환합니다. 그리고 C#은 실제로 array[3..10] 같은 것들이 배열의 일부분 (또는이 경우 문자열)을 제공하는 다른 프로그래밍 언어만큼 아름답 지 않습니다.

+0

흥미 롭습니다. 정보 주셔서 감사합니다! – MTH