美文网首页系统方法解读
NSScaner类的用法 判断输入的字符串类型

NSScaner类的用法 判断输入的字符串类型

作者: Demonboy | 来源:发表于2017-06-23 10:47 被阅读25次
  1. 判断是否为整形
+ (BOOL)isInt:(NSString *)str {
    NSInteger intStr = 0;
    NSScanner *scan = [NSScanner scannerWithString:str];
    return [scan scanInteger:&intStr] && [scan isAtEnd];
}
  1. 判断是否为浮点型
+ (BOOL)isFloat:(NSString *)str {
    float floatStr = 0.0;
    NSScanner *scan = [NSScanner scannerWithString:str];
    return [scan scanFloat:&floatStr] && [scan isAtEnd];
}
  1. 判断是否为double双精度型
+ (BOOL)isHexInt:(NSString *)str {
    unsigned uIntStr = 0;
    NSScanner *scan = [NSScanner scannerWithString:str];
    return [scan scanHexInt:&uIntStr] && [scan isAtEnd];
}
  1. 以字符串“132 panda lxl of apple”为例,在扫描完一个整数之后,scanner的位置将变成3,也即是数字后面的空格处。scanner在任何操作时会跳过空白字符之后才开始,当它找到一个可以扫描的字符时,它会用全部字符去和指定内容匹配,scanner默认情况下会忽略空白字符和换行符。

  2. 查找字符串separateString"of"很重要,scanner默认会忽略空白字符,因此数字132后面的空格会被忽略。但是当scanner从空格后面的字符开始扫描时,所有的字符都会被加载到输出字符串中,一直到遇到搜索字符串"of"。

  3. 注意:如果搜索字符串是“of”,(前面没空格),name的值应该是"fushipingguo "(最后面有个空格);如果搜索字符串是" of",(前面有空格),则name的值为"fushi pingguo"(最后面无空格)。在扫描到指定字符串(搜索字符串)后,scanner的位置指向了该字符串的开始处。此时,如果我们想继续扫描该字符串之后的字符,则同上面一样,必须先扫描指定字符串(搜索字符串)

+ (void)suosuoStr {

    NSString *apple = @"132 fushi pingguo of apple";

    //注意of前面有一个空格

    NSString *separateString = @" of";
    NSScanner *aScanner = [NSScanner scannerWithString:apple];
    NSInteger anInteger;

    //得到数量132
    [aScanner scanInteger:&anInteger];
    NSLog(@"%ld", (long)anInteger);

    NSString *name;

    //得到名称fushi pingguo
    [aScanner scanUpToString:separateString intoString:&name];
    NSLog(@"%@", name);
}
//截取字符串中的数字

+ (void)suosuoInt {

    NSString *str = @"Product:Lxl Panda Peter;Cost:0.23 87\n\Product:Xiong Mao Bet;Cost:0.38 76\n\Product:San Di Sex;Cost:1.29 3\n";

    NSCharacterSet *semicolonSet;

    NSScanner *theScanner;

    NSString *PRODUCT =@"Product:";

    NSString *COST = @"Cost:";

    NSString *productNmae;

    float productCost;

    NSInteger productSold;

    semicolonSet = [NSCharacterSet characterSetWithCharactersInString:@";"];

    theScanner = [NSScanner scannerWithString:str];

    while([theScanner isAtEnd] == NO) {

        if([theScanner scanString:PRODUCT intoString:NULL] &&
           [theScanner scanUpToCharactersFromSet:semicolonSet intoString:&productNmae] &&
           [theScanner scanString:@";" intoString:NULL] &&
           [theScanner scanString:COST intoString:NULL] &&
           [theScanner scanFloat:&productCost] &&
           [theScanner scanInteger:&productSold]) {

            //得到Sales of Lxl Panda Peter:$20.01

            //Sales of Xiong Mao Bet:$28.88

            //Sales of San Di Sex:$3.87

            NSLog(@"Sales of %@:$%1.2f",productNmae,productCost*productSold);

        }
    }
}

相关文章

  • NSScaner类的用法 判断输入的字符串类型

    判断是否为整形 判断是否为浮点型 判断是否为double双精度型 以字符串“132 panda lxl of ap...

  • python数据类型

    字符串 类型:python中的数据类型 特性:不能修改 格式: 字符串的用法: 列表 类型:python中的数据类...

  • C语言基础知识

    float类型 double类型 char 类型 接收用户输入 scanf scanf输入的值是可以判断的 强制类...

  • Python2与Python3获取输入的区别

    python2 : raw_input( )的输入都是字符串类型; input( )输入的则是根据输入内容判断数据...

  • 20160105| 1.2作业

    BeautifulSoup用法简说python split 拆分字符串python 判断变量类型为什么少用type...

  • bugku-代码审计wp

    1.extract变量覆盖 2.strcmp比较字符串 strcmp()用法参考: 函数期望传入的类型是字符串类...

  • Golang 学习之“”、nil 和 len(s)的对比

    1 用法 使用”“判断string变量是否为空。输入: 输出:s is empty 2 nil用法 使用nil判断...

  • 封装$函数

    封装类JQuery。 判断类型,如果传的是字符串,判断是否为'#' '. '和标签选择器,如果是的话就将其push...

  • 输入类判断

    1、必填项都用*标识,如果必填输入框有为空的时候,下方的按钮置灰。2、如果必填项都填写了,按钮点亮。3、点击按钮时...

  • 页面输入类型的判断

    页面输出的结果是? 答案:true false 页面中输入的任何数据都是字符串

网友评论

    本文标题:NSScaner类的用法 判断输入的字符串类型

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