2013-06-04 8 views
1

뉴질랜드 은행과 호주 은행 계좌를 사용자가 제공 한 사용자 지정 형식에 따라 보고서로 표시합니다. 예를 들어 NZ 은행 계좌는 00-0000-0000000-000 일 수 있으며 마지막 숫자 (은행 계좌 접미사)는 선택 사항입니다. 대시뉴질랜드 은행 계좌 형식 표시

  • 배치
  • 2 자리 접두사

샘플 형식의 은행 계좌가 01-1234-1234567-55 및 01-1234-1234567-002 될 수 있습니다 형식의 두 부분이 있습니다 . 은행 계좌는 서식없이 데이터베이스에 저장됩니다. String.Format ("{0 : 00-0000-0000000-00 #}", 121234123456712)을 시도한 결과 12-1234-1234567-12이지만 01-2123-4123456-712는 반환되지 않습니다.

필자는 은행 계좌의 길이를 항상 테스트하고 switch 문을 사용할 수 있지만 형식은 사용자 정의입니다.

다음은 대시가 제대로 배치 보장하고 접미사가 정확한지 : 계정이 유효 여부, 그것은 형식 인 경우

// ensure there is a format to use and a bank account is present 
if (bankaccountformat != "" && bankaccountformat.Contains('-') && bankaccount != "") 
{ 
    int i = 0; 
    foreach (char dash in bankaccountformat) 
    { 
    // add dash in bank account, if bank account is long enough 
    if (dash == '-' && bankaccount.Length > i) 
    { 
     bankaccount = bankaccount.Insert(i, "-"); 
    } 
    i++; 
    } 
} 

문제는 아니다. 계정을 형식화하는 더 좋은 방법을 알려주십시오.

답변

0

사용하는 프로그래밍 언어는 언급하지 않았습니다. 어쨌든, 당신은 배열을 사용하는 것 같습니다. 그것은 까다로울 수 있습니다. 나는이 스크립트 (fmat)에 같은 문자열 조작을 사용 BASH에서

:

#!/bin/bash 

#only numbers allowed 
[[ ! "$1" =~ ^[0-9]+$ ]] && echo "Error: enter numbers only" && exit 

s=$1 
l=${#s} 
r=l-13 

#minimal number of digits is 13, maximum 16 
[[ r -lt 0 || r -gt 3 ]] && echo "Error: enter 13-16 digits" && exit 

#first 13 digits 
a=${s:0:2}"-"${s:2:4}"-"${s:6:7} 

#when 14-16 digits 
a=$a"-"${s:13:r} 

echo $a 

fmat은 011,234,123,456,755 01-1234-1234567-55

fmat 0112341234567002주는 제공 01-1234-1234567- 002

fmat 0112341234567는 적어도이 몇 가지 힌트를 제공

당신은 BASH 것보다 다른 것을 사용하는 경우 01-1234-1234567을 제공합니다.

+0

나는 C#을 사용하여 m이라는 것을 잊어 버렸다. –

+0

아, C#의 문자열 조작도 쉽다. 저는 스크립트를 제공 할 수 없기 때문에 C#을 사용하지 않지만 여러분이 아이디어를 얻길 바랍니다. – linuph

관련 문제