Object-C 字符串

C和OC字符串的相互转换

// c 转oc 字符串

char *p = "zhangsan";
NSString *str1 = [NSString stringWithCString:p encoding:NSUTF8StringEncoding];
NSLog(@"%@",str1);

//将oc字符串转为c字符串

NSString *str2 = @"hello world";
const char *p1 = [str2 UTF8String];
NSLog(@"%s",p1);

//判断字符串是否相等

    NSString *str = @"Hello world";
    NSString *str1 = @"hello world";
       //isEquoTo 用来判断两个字符串是否相等
    BOOL vavl =  [str isEqualTo:str1];
    if (vavl) {
        NSLog(@"相等");
    }
    else
    {
        NSLog(@"不相等");
    }
    //按ASICC码比较
    NSComparisonResult result =[str compare:str1];
   // NSComparisonResult 类型重定义 本质上是NSInterger
   //枚举值
   //NSOrderedAscending -1l 是升序
   //NSOrderedDescending 1  是降序
   // NSOrderedSame   // 0 一样大
    if (result == NSOrderedSame) {
        NSLog(@"一样大");
    }
    else if(result == NSOrderedDescending)
        NSLog(@"第一个大");
    else if(result == NSOrderedAscending)
    {
        NSLog(@"第二个大");
    }
     NSString *str2 = @"sina.com.cn";

//判断是前缀还是后缀

    // hasPrefix 是前缀判断方法
    // hassuffix 是后缀判断方法
    BOOL vavl1 = [str2 hasPrefix:@"sina"];
    if (vavl1) {
        NSLog(@"是前缀");
    }
    vavl1 = [str2 hasSuffix:@".cn"];
    if (vavl1) {
        NSLog(@"是后缀");

//将一个数字字符串转成普通类型

    NSString *str6 = @"333";
    NSLog(@"%d",[str6 intValue]);
    NSLog(@"%ld",[str6 integerValue]);
    NSLog(@"%g",[str6 doubleValue]);
    NSLog(@"%g",[str6 floatValue]);

//读取子串

  NSString *str = @"hello world";
 //str substringFromIndex 是从给定的下标开始,一直读到最后
 NSLog(@"%@",[str substringFromIndex:2]);
 //substringToIndex 是从第0号元素开始,读取到给定下标,但不包含给定下标元素
 NSLog(@"%@",[str substringToIndex:2]);

//查找子串 world

    //NSRange 返回值类型    是一个struct  返回是在原字符串的位置和长度
    NSRange range = [str rangeOfString:@"world"];
    if (range.location == NSNotFound) //存在这一个位置
    {
        NSLog(@"没有找到");
    }
    else
    {
        NSLog(@"%ld,%ld",range.location,range.length);
    }

// 通过一个c 语言的结构体去查找子串,返回一个子串

    NSRange range1 = {1,3};
    NSLog(@"%@",[str substringWithRange:range1]);

//字符串拼接

    NSString *str = @"hello world";
    NSMutableString *str2 = [[NSMutableString alloc] initWithString:str];
    NSLog(@"%@",str2);
    //appendString 是自动在原字符串末尾添加字符串
    [str2 appendString:@"zuibang"];
    NSLog(@"%@",str2);
    [str2 appendFormat:@"%d",1605];
     NSLog(@"%@",str2);

//设置

     [str2 setString:@"hello Ios"];
     NSLog(@"%@",str2);

//在指定的位置插入字符串

    //insertString 下标值 不能超过原字符串最大下标,否则程序崩溃
    [str2 insertString:@"zhangsan" atIndex:3];
    //改
    //replaceCharactersInRange (NSRange) NSMakeRange

// 将指定范围内的字符串修改为设定的字符串

    [str2 replaceCharactersInRange:NSMakeRange(0, 3) withString:@"lisi"];
    NSLog(@"%@",str2);

// 字符串替换

    [str2 replaceOccurrencesOfString:@"zhangsan" withString:@"lisi" options:NSLiteralSearch range:NSMakeRange(0, [str2 length])];
    //第一个 是要被替换的子串
    //第二个 最后在原字符中要显示的
    //第三个  默认NSLiteralSearch
    //第四个  NSMakeRange  位置  0  长度 整个字符串的长度
    NSLog(@"%@",str2);

//删除 指定范围内的子串

    [str2 deleteCharactersInRange:NSMakeRange(4, 5)];
    NSLog(@"%@",str2);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS中使用公钥字符串进行RSA加密的步骤如下: 1. 将公钥字符串转换为NSData类型。 ``` NSString *publicKeyString = @"-----BEGIN PUBLIC KEY-----\n...公钥字符串...\n-----END PUBLIC KEY-----"; NSData *publicKeyData = [publicKeyString dataUsingEncoding:NSUTF8StringEncoding]; ``` 2. 创建SecKey对象。 ``` NSMutableDictionary *publicKeyAttributes = [[NSMutableDictionary alloc] init]; [publicKeyAttributes setObject:(__bridge id)kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType]; [publicKeyAttributes setObject:@(2048) forKey:(__bridge id)kSecAttrKeySizeInBits]; [publicKeyAttributes setObject:publicKeyData forKey:(__bridge id)kSecValueData]; [publicKeyAttributes setObject:(__bridge id)kSecAttrKeyClassPublic forKey:(__bridge id)kSecAttrKeyClass]; SecKeyRef publicKey; OSStatus status = SecItemAdd((__bridge CFDictionaryRef)publicKeyAttributes, (CFTypeRef *)&publicKey); ``` 3. 使用SecKey对象进行加密。 ``` NSData *plainData = [@"要加密的数据" dataUsingEncoding:NSUTF8StringEncoding]; size_t cipherBufferSize = SecKeyGetBlockSize(publicKey); uint8_t *cipherBuffer = malloc(cipherBufferSize); memset(cipherBuffer, 0, cipherBufferSize); OSStatus status = SecKeyEncrypt(publicKey, kSecPaddingPKCS1, [plainData bytes], [plainData length], cipherBuffer, &cipherBufferSize); NSData *encryptedData = [NSData dataWithBytesNoCopy:cipherBuffer length:cipherBufferSize]; ``` 4. 释放SecKey对象。 ``` CFRelease(publicKey); ``` 注意:在iOS中使用公钥加密时,需要使用PKCS#1填充模式(kSecPaddingPKCS1)。另外,如果公钥字符串中的换行符不是`\n`,需要将其替换为`\n`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值