2009-09-29 2 views
1

문자열 유형 인 일련 번호가 있습니다.문자열 형식이 작동하지 않습니다. 문자열의 경우

Like this;

String.Format ("{0 : #### - #### - #### - ####}", "1234567891234567");

나는 이것을 좋아할 필요가있다, 1234-5678-9123-4567;

부이 코드는 작동하지 않습니까?

도와 주시겠습니까?

+0

그리고이 시도, String.Format ("{0 : #### - #### - #### - ####}", Double.Parse ("1234567891234567")); 하지만 1234-5678-9123-4568처럼 보입니까? Double.Parse는 마지막 숫자를 증가시킵니다. 나는 이해하지 못한다. – atromgame

+0

다른 문제가 있습니다. Doublestart가 Double Number를 유지할 수 없기 때문에 http://stackoverflow.com/questions/1193630/add-two-double-given-wrong-result를 확인하십시오. –

+0

Double.Parse ("1234567891234567")는 반올림 오류가 발생합니다. . Int64 수 있습니다! –

답변

3

구문 int를 소요,이 시도 :

String.Format("{0:####-####-####-####}", 1234567891234567); 

편집 :이 시도 문자열에이 구문을 사용하려면 : ####의 경우

String.Format("{0:####-####-####-####}", Convert.ToInt64("1234567891234567")) 
+0

아니요이 작업을 수행 할 수 없습니다. 문자열 mycode = "1234567891234567"; String.Format ("{0 : #### - #### - #### - ####}", mycode); 동적 직렬 번호를 사용합니다. 그래서 String 변수를 사용합니다. – atromgame

+0

또한 Decilam.Parse()를 사용합니다. 너무 효과적입니다. – atromgame

+1

'string'을'long'으로 변환하여 다시'string'으로 다시 변환하기 위해 약간 복잡하게 보입니다. – LukeH

2

을 - ## ## - #### - ####, 번호가 필요합니다. 그러나 당신은 그것에게 줄을 먹이고 있습니다.

문자열을 왼쪽에 추가로 0으로 채우면 정확히 16 자로 채워지는 것이 더 실용적입니다. 그런 다음 대시를 문자열 안의 세 위치에 삽입하십시오. Int64로 변환해도 작동하지만이 문자열이 더 커지거나 비 숫자를 포함하기 시작하면 문제가 발생합니다.

string Key = "123456789"; 
string FormattedKey = Key.PadLeft(16, '0').Insert(12, "-").Insert(8, "-").Insert(4, "-"); 

형식 지정 대신 사용할 수 있습니다. 키를 정확하게 16 문자로 만든 다음 오른쪽에서 왼쪽으로 세 개의 대시를 삽입합니다. (지표를 쉽게 추적 할 수 있습니다.)

다른 대안이 많이 있지만 여기서는 잘 작동합니다.

+0

그래서 어떻게 문자열 변수를 포맷 할 수 있습니까? – atromgame

+0

위에서 시도한 구문을 사용하려면 문자열을 –

+1

으로 변환하거나 내 대답에 추가 한 대체 솔루션을 사용하십시오. :-) –