2013-04-25 4 views
1

긴 형식 한정자가 포함 된 타사 SW에서 문자열을 가져옵니다. "1L". 이것을 Int64로 구문 분석하려고하지만 Int64.TryParse가 이것을 Int64로 인식하지 못합니다. 안전하게이 작업을 수행 할 수있는 .NET 메소드가 있습니까? 나는 자신을 파싱하는 것을 피하고 싶다 ...Long 형식 한정자를 사용하여 String을 구문 분석하는 .NET 메서드

어떤 도움을 주셔서 감사합니다! 가장 간단한 경우

+1

'하려면 string.replace ("L", "")'? – I4V

+0

'L'(또는'l')을 1로 바꾸십시오. 첫 번째 공백이 아닌 문자는 아닙니다. 2) 마지막 문자이거나 바로 뒤에 공백 문자가옵니다. –

답변

1

,이 작업을 수행 할 수 있습니다

string sNum = "1L"; 
int pos = sNum.IndexOf('L'); 
if (pos == sNum.Length-1) 
{ 
    sNum = sNum.Substring(0, sNum.Length-1); 
} 
long num = int64.Parse(sNum); 
+0

그래서 나는이 변환을 정말로 이해하지 못한다. 그러나'L '이 첫 번째 위치에 있다면'Int64.Parse'가 작동 할까? –

+0

@MichaelPerrenoud : 문서에 따르면'Int64.Parse'는'[공백] [부호] 숫자 [공백]을 원합니다. 선행 또는 후행 형식 지정자는 허용되지 않습니다. –

+0

이제는 꼬리말 타입 지정자 (예 :'L')가 실제로 표준이 아니라 오히려 어디서 왔는지에 대한 인공물이라고 이해했습니다. –

0

주위를 탐색에서, 나는 추천 할 수있는 최선은 를 추출하거나 숫자가 아닌 문자를 제거하고 구문 분석 중 하나에 정규 표현식을 사용하고 있습니다 프레임 워크 (변환, 구문 분석 또는 TryParse 등). 나는 아래의 질문 중 하나에서이 데친

, 그것이 작동하는 희망 :

+0

감사합니다. 문자열 조작을 피할 수 있었으면 좋겠지 만 작동 할 것입니다. – user736570

+1

그러면 "93foobar265"가 "93265"가됩니다. 장난. –

+0

넵 짐, 가장 깨끗한 것이 아니라 내가 찾을 수있는 최고. 정규식은 L 또는 l을 (사용자의 의견에 따라) 바꿀만큼 쉽게 변경 될 수 있지만 OP는 알파 문자의 제한 또는 가능한 위치가 무엇인지에 대해 명확하지 않습니다 – GrahamMc