문제

C # .NET에서는 사용자 정의 형식 문자열을 사용하여 문자열에 숫자를 형식화하는 방법의 간단한 예입니다. ( "Noofollow"> http://www.csharp-examples.net/string-int.-int / )

String.Format("{0:+### ### ### ###}", 447900123456); // "+447 900 123 456"
String.Format("{0:##-####-####}", 8958712551);       // "89-5871-2551"
.

이 형식화 된 문자열을 다시 / 정수로 다시 변환하는 방법이 있습니까?이 작업을 수행 할 수 있습니다 :

long PhoneNumber = Int32.Parse("89-5871-2551", "{0:##-####-####}");
.

DateTime 이이 작업을 잘 수행 할 수있는 ParseExact 메소드를 보았습니다.그러나 나는 int / long / decimal / double에 대한 어떤 것들을 보지 못했습니다.

도움이 되었습니까?

해결책

숫자가 아닌 모든 문자를 모두 regex로 꺼낸 다음 해당 문자열을 구문 분석합니다.

다른 팁

모든 숫자 숫자가 아닌 모든 숫자를 정규 처리 할 수 있으며, 왼쪽으로 남아있는 것은 당신이 구문 분석 할 수있는 숫자 문자열입니다.

var myPhoneNumber = "89-5871-2551";
var strippedPhoneNumber = Regex.Replace(myPhoneNumber, @"[^\d]", "");
int intRepresentation;

if (Int32.TryParse(strippedPhoneNumber, out intRepresentation))
{
    // It was assigned, intRepresentation = 8958712551
    // now you can use intRepresentation.

} else {
    // It was not assigned, intRepresentation is still null.
}
.

항상 를 할 수 있습니다.

long PhoneNumber = Int32.Parse("89-5871-2551".
                Replace(new char[]{'-','+',whatever..}).Trim());
.

일부 IO에서 수신 된 문자열을 구문 분석하고 있음을 고려할 때, 나는 더 안전한 (변환 측면에서) int32.tryparse 메소드

과 같은 방식은 실제로 존재하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top