2012-06-01 5 views
1

아마 n00b 질문이지만 .net/C# MSDN Library와이 사이트에서 살펴본 결과 아직 명확한 대답을 얻지 못했습니다 ... say (I 문자열을 생성하지만 DB에서 그들을 읽는 아니에요으로이 정확히 문제되지 않습니다하지만 ... 함께 일하고 있어요 무엇을 설명하는 역할을한다.) 문자열 포맷 C#에서 인쇄 할 숫자/날짜를 포함하는 변수

string dob = "01/02/1990"; 
dob.ToString("MM/dd/YY"); //however, I can't do this. compiler gives me an error... 
: 나는 예를 들어했다

이미 문자열이기 때문에 가능성이 있습니까? 그렇다면 어떻게 문자열을 이미 문자열 일 때 지정자를 사용하여 원하는 형식으로 가져올 수 있습니까? 내가 다른 것으로 변환 (예 : DateTime)하고 ToString()을 사용하여 문자열로 다시 변환 할 수 있음을 알고 있습니다. 그러나 이것은 카운터 생산성이있는 것 같습니다 ... 적어도 내게는

나는 또한 여러 가지가 있습니다. "종류"문자열 변수 나는 PDF 형식의 필드에 인쇄하기 위해 Idictionary에 저장하는 동안 특정 형식으로 표시하려고합니다. 예를 들어 :

d["amount"] = prod.sales.StringAmount; //(here StringSmount holds say 50000 (gotten from a DB), which I want to display as "50,000") 

그러나 나는 또한 prod.sales.StringAmount.ToString ("N", CultureInfo.CurrentUICulture)를 할 수 없다; 사촌 그것은 이미 문자열이야! 이 작업을 수행 할 수있는 쉬운 방법이 있습니까?

또는 String Buffer 또는 StringBuilder 클래스가 필요합니까 ?? 덕분에 !

+0

참고 문자열에 ToString()을 호출해도 문제가 없지만 그 이유는 무엇입니까? – Bridge

+0

왜'dob'를'DateTime' 객체로 만들지 말고'ToString()'을 사용해서 비밀리에 ... dob.ToString ("MM/dd/YY")'에 세미콜론이 없습니다. –

+0

이유는 문자열에 ToString()을 호출합니다. 이미 DB의 biz 객체에로드 된 문자열 필드가 있습니다. 그리고 이들을 형식화하여 pdf에 멋지게 인쇄합니다. 따라서, 나는 이것을 할 수있는 쉬운 방법이 있는지를 알 수 없었다. 즉 : 내가 가지고 있다고 : – unknownprotocol

답변

3

당신은 다음과 같이 수행 할 수 있습니다

DateTime dob = DateTime.Parse("01/02/1990"); 

을 다음

dob.ToString("MM/dd/YY"); 

작동합니다. 예외 상황을 던지는 대신에보다 - DateTime.Parse()이 가능한 날짜와 시간 형식이 받아 들일 수있는 다양한 옵션을 가지고, 또한 문자열이 유효한 날짜가 아닌 경우 false를 반환하는 TryParse() 버전이 있음을

참고. DateTime.ParseExact()DateTime.TryParseExact() 유사 콘텐츠도 있습니다.

날짜 - 시간 이외의 다른 데이터 형식에도 동일한 방법을 사용하십시오. 먼저 다양한 데이터 형식 (정수, 부동 등)을 사용하여 다양한 Parse() 또는 TryParse() 메서드를 사용하여 입력 문자열을 변환 한 다음이 변환 결과를 서식을 지정하십시오 .

0

먼저 숫자/DateTime으로 구문 분석 한 다음 문자열 서식 변수를 사용하는 것이 좋습니다. 이것이 필요한 이유의 예를 들어, DateTime.ParseExact을 사용하여 구문 분석하지 않는 한 "01/02/1990"문자열은 1 월 2 일과 2 월 1 일 사이에 모호합니다.

.NET의 내장 문화권 구분 문자열 형식 지정 기능을 사용할 수 있도록 (예 : StringBuilder를 사용하여) '자신 만의 롤링'을 권합니다.

1

ToString은 원본을 수정하지 않고 값을 반환합니다. 대신

dob.ToString("MM/dd/YY"); 

사용

dob = dob.ToString("MM/dd/YY"); 
+0

이것은 내가 시도했을 때 저에게 오류를주는 것처럼 보였습니다 ... IFormatProvider에 대한 잘못된 것 ... ""Arteemnt type 'string'은 매개 변수 유형 'System.IFormatProvider'에 할당 할 수 없습니다 – unknownprotocol

1

우선합니다 (Parse() 또는 TryParse() 방법 통해) DateTime 인스턴스로의 문자열을 파싱

. DateTime 인스턴스에서 ToString (..)을 호출 할 수 있습니다.

1

위의 형식을 사용하면 .ToString ("MM/dd/YY") 형식을 사용하려면 다시 DateTime으로 변환해야합니다. ToString은 왜 개체/값을 문자열 표현으로 변환하는 데 사용되며 DateTime 개체는 형식을 받아 들일만큼 유용합니다.

이미 문자열 인 형식을 지정하려면 String.Format을 사용해야합니다. 이 링크를 방문하십시오 : http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx. 이 링크는 표준 숫자 포맷터를 보여줍니다.

나만의 문자열 형식을 만들 수도 있습니다. IFormatProvider 및 ICustomFormatter를 확인하십시오 : http://msdn.microsoft.com/en-us/library/system.icustomformatter.aspx.