美文网首页
OC String 链式调用 处理增删操作

OC String 链式调用 处理增删操作

作者: LiYaoPeng | 来源:发表于2018-09-28 19:17 被阅读0次

    调用:

      NSString *str1 = @"12342314.000000"
                        .deleteLastStr(@"0")
                        .deleteLastChar()
                        .addFloat(111.010825,3,true);
    
    log : 12342314111.011
    

    .h

    //
    //  NSString+StringHandler.h
    //  OC_AttributedStringHandler
    //
    //  Created by 李鹏跃 on 2018/9/28.
    //  Copyright © 2018年 13lipengyue. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface NSString (StringHandler)
    
    
    /**
     添加objc对象
     · 参数为id类型
     */
    - (NSString *(^)(id objc)) addObjc;
    
    
    /**
     返回拼接float后的字符串
     · 第一个参数: float
     · 第二个参数: 保留几位小数
     · 第三个参数: 是否四舍五入
     */
    - (NSString *(^)(CGFloat value,
                     NSInteger decimalDigits,
                     BOOL isRound)) addFloat;
    
    
    /**
     添加int字符
     */
    - (NSString *(^)(NSInteger value)) addInt;
    
    
    - (NSString *(^)(NSString *deleteStr)) deleteStr;
    
    /**
     * @brief 从后开始遍历删除指定字符
     * @ 参数为 string
     * @return 返回str.
     */
    - (NSString *(^)(NSString *deleteStr)) deleteLastStr;
    
    /**
     * @brief 从前开始遍历删除指定字符
     * @ 参数为 string
     * @return 返回str.
     */
    - (NSString *(^)(NSString *deleteStr)) deleteFrontStr;
    
    /**
     * @brief 删除最后一个字符 @ 参数为 void
     */
    - (NSString *(^)(void)) deleteLastChar;
    
    /**
     * @brief 删除第一个字符 @ 参数为 void
     */
    - (NSString *(^)(void)) deleteFrontChar;
    
    
    
    
    /**
     float 转成字符串
     
     @param value float值
     @param decimalDigits 保留几位小数
     @param isRound 四舍五入或者直接去掉最后的小数
     @return string
     */
    + (NSString *) createWithFloat: (CGFloat)value
                    andDecimalDigits: (NSInteger)decimalDigits
                          andIsRound: (BOOL)isRound;
    
    + (NSString *) createWithInt: (NSInteger)value;
    @end
    

    .m

    //
    //  NSString+StringHandler.m
    //  OC_AttributedStringHandler
    //
    //  Created by 李鹏跃 on 2018/9/28.
    //  Copyright © 2018年 13lipengyue. All rights reserved.
    //
    
    #import "NSString+StringHandler.h"
    #import <math.h>
    @implementation NSString (StringHandler)
    
    - (NSString *(^)(id objc)) addObjc {
        return ^(id objc){
            return [NSString stringWithFormat:@"%@%@",self,objc];
        };
    }
    
    - (NSString *(^)(CGFloat value, NSInteger decimalDigits, BOOL isRound)) addFloat {
        return ^(CGFloat value, NSInteger decimalDigits, BOOL isRound) {
            NSString *floatValue = [NSString createWithFloat:value
                                           andDecimalDigits:decimalDigits
                                                 andIsRound:isRound];
            return [NSString stringWithFormat:@"%@%@",self,floatValue];
        };
    }
    
    - (NSString *(^)(NSInteger value)) addInt {
        return ^(NSInteger value) {
            return [NSString stringWithFormat:@"%ld",value];
        };
    }
    
    - (NSString *(^)(NSString *deleteStr)) deleteStr {
        return ^ (NSString *deleteStr) {
            NSMutableString *str = self.mutableCopy;
            [str stringByReplacingOccurrencesOfString:deleteStr withString:@""];
            return str;
        };
    }
    
    - (NSString *(^)(NSString *deleteStr)) deleteLastStr {
        return ^ (NSString *deleteStr) {
            NSMutableString *str = self.mutableCopy;
            NSInteger i = 0, length = str.length;
            for (i = length - 1; i >= 0; i--) {
               NSString *lastStr = [str substringFromIndex:str.length - 1];
                
                if ([lastStr isEqualToString:deleteStr]) {
                    NSRange range = NSMakeRange(i, 1);
                    [str deleteCharactersInRange:range];
                    
                }else{ break; }
            }
            return str;
        };
    }
    
    - (NSString *(^)(NSString *deleteStr)) deleteFrontStr {
        return ^ (NSString *deleteStr) {
            NSMutableString *str = self.mutableCopy;
            NSInteger i, length = str.length;
            NSString *firstStr = [str substringFromIndex:0];
            for (i = 0; i < length; i++) {
                if ([firstStr isEqualToString:deleteStr]) {
                    NSRange range = NSMakeRange(0, 1);
                    [str deleteCharactersInRange:range];
                }
            }
            return str;
        };
    }
    
    - (NSString *(^)(void)) deleteLastChar {
        return ^ {
            NSMutableString *str = self.mutableCopy;
            NSRange range = NSMakeRange(self.length-1, 1);
            [str deleteCharactersInRange:range];
            return str;
        };
    }
    
    - (NSString *(^)(void)) deleteFrontChar {
        return ^ {
            NSMutableString *str = self.mutableCopy;
            NSRange range = NSMakeRange(0, 1);
            [str deleteCharactersInRange:range];
            return str;
        };
    }
    
    + (NSString *) createWithFloat: (CGFloat)value
                    andDecimalDigits: (NSInteger)decimalDigits
                          andIsRound: (BOOL)isRound {
        
        NSInteger decimalDigitsTemp = decimalDigits;
        CGFloat floatValue = value * (pow(10,decimalDigitsTemp));
        NSInteger integerValue = 0;
        integerValue = isRound ? round(floatValue) : floatValue;
        
        NSMutableString *strTemp = @"".mutableCopy;
        
        for (int i = 0; i < decimalDigitsTemp; i ++) {
            NSInteger value = integerValue % 10;
            
            NSString *valueStr = [NSString stringWithFormat:@"%ld",value];
            [strTemp insertString:valueStr atIndex:0];
            
            integerValue /= 10;
        }
        
        integerValue = value;
        
        return [NSString stringWithFormat:@"%ld.%@",integerValue,strTemp];
    }
    
    + (NSString *) createWithInt: (NSInteger)value {
        return [NSString stringWithFormat:@"%ld",value];
    }
    @end
    

    相关文章

      网友评论

          本文标题:OC String 链式调用 处理增删操作

          本文链接:https://www.haomeiwen.com/subject/sjtmoftx.html