UITextField
番号を銀行番号に自動フォーマットできるを書きたいです。
例:入力1234567890098765
は自動的にとして表示され1234 5678 9009 8765
ます。
使ってみますtextFieldDelegate
が、使い方がわかりませんNSNumberFormatter
。
どうすればいいですか?
UITextField
番号を銀行番号に自動フォーマットできるを書きたいです。
例:入力1234567890098765
は自動的にとして表示され1234 5678 9009 8765
ます。
使ってみますtextFieldDelegate
が、使い方がわかりませんNSNumberFormatter
。
どうすればいいですか?
使い方NSNumberFormatter
は簡単です。
NSNumber *number = [NSNumber numberWithLongLong:1234567890098765];
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setUsesGroupingSeparator:YES];
[formatter setGroupingSize:3];
// [formatter setGroupingSeparator:@"\u00a0"];
NSString *string = [formatter stringFromNumber:number];
,
ユーザーのロケール(たとえば、米国、.
ドイツ'
、スイス)によって提供されるデフォルトの区切り文字を使用する方がよい場合があるため、フォーマッターのグループ化区切り記号を設定する行に意図的にコメントしました。また、iOSはスペースを区切り文字として使用せず、改行しないスペース(U+00A0
)を使用することに注意してください。
私はc++ソリューションを持っています、多分あなたはあなたの文字列をcstringに変えてそしてそれから元に戻すことができます
char s[50]={'\0'},ch[99]={'\0'};
int i,j,k,len;
printf("input a string:\n");
scanf("%s",s);
len=strlen(s);
k=0;
for(i=0;i<len;i+=4)
{
for(j=0;j<4;j++)
{
*(ch+k)=*(s+i+j);
k++;
}
*(ch+k)=' ';
k++;
}
printf("%s\n",ch);
これを試して :-
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *text = [textField text];
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789\b"];
string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
if ([string rangeOfCharacterFromSet:[characterSet invertedSet]].location != NSNotFound) {
return NO;
}
text = [text stringByReplacingCharactersInRange:range withString:string];
text = [text stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *newString = @"";
while (text.length > 0) {
NSString *subString = [text substringToIndex:MIN(text.length, 4)];
newString = [newString stringByAppendingString:subString];
if (subString.length == 4) {
newString = [newString stringByAppendingString:@" "];
}
text = [text substringFromIndex:MIN(text.length, 4)];
}
newString = [newString stringByTrimmingCharactersInSet:[characterSet invertedSet]];
if (newString.length >= 20) {
return NO;
}
[textField setText:newString];
return NO;
}
これがあなたに役立つことを願っています..