您好,登錄后才能下訂單哦!
/*
* 處理一個數字加小數點的字符串,前面無0,保留兩位。網上有循環截取的方法,如果數字過長,浪費內存,這個方法在優化內存的基礎上設計的。
*/
-(NSString*)getTheCorrectNum:(NSString*)tempString
{
//先判斷第一位是不是 . ,是 . 補0
if ([tempString hasPrefix:@"."]) {
tempString = [NSString stringWithFormat:@"0%@",tempString];
}
//計算截取的長度
NSUInteger endLength = tempString.length;
//判斷字符串是否包含 .
if ([tempString containsString:@"."]) {
//取得 . 的位置
NSRange pointRange = [tempString rangeOfString:@"."];
NSLog(@"%lu",pointRange.location);
//判斷 . 后面有幾位
NSUInteger f = tempString.length - 1 - pointRange.location;
//如果大于2位就截取字符串保留兩位,如果小于兩位,直接截取
if (f > 2) {
endLength = pointRange.location + 2;
}
}
//先將tempString轉換成char型數組
NSUInteger start = 0;
const char *tempChar = [tempString UTF8String];
//遍歷,去除取得第一位不是0的位置
for (int i = 0; i < tempString.length; i++) {
if (tempChar[i] == '0') {
start++;
}else {
break;
}
}
//如果第一個字母為 . start后退一位
if (tempChar[start] == '.') {
start--;
}
//根據最終的開始位置,計算長度,并截取
NSRange range = {start,endLength-start};
lablebalance.text = [tempString substringWithRange:range];
return tempString;
}
//判斷只能顯示出兩位小數點
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//控制長度
if(range.location>=20)
return NO;
const char * ch=[string cStringUsingEncoding:NSUTF8StringEncoding];
if(*ch == 0)
return YES;
//字符0-9 和 .
if( *ch != 46 && ( *ch<48 || *ch>57) )
return NO;
//有了小數點
if([ lablebalance.text rangeOfString:@"."].length==1)
{
NSUInteger length=[lablebalance.text rangeOfString:@"."].location;
//小數點后面兩位小數 且不能再是小數點
if([[lablebalance.text substringFromIndex:length] length]>2|| *ch ==46) //3表示后面小數位的個數。。
return NO;
}
return YES;
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。