【代码笔记】判断中英文混合的字符长度的两种方法

一,代码。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    //第一种方法
    NSLog(@"--first-%i",[self convertToInt:@"123我爱你"]);
    //第二种方法
    NSLog(@"--second--%ld",[self getToInt:@"123我爱你"]);

}

//得到中英文混合字符串长度 方法1
- (int)convertToInt:(NSString*)strtemp
{
    int strlength = 0;
    char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
    for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {
        if (*p) {
            p++;
            strlength++;
        }
        else {
            p++;
        }

    }
    return strlength;
}

//得到中英文混合字符串长度 方法2
- (NSInteger)getToInt:(NSString*)strtemp

{
    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
    NSData* da = [strtemp dataUsingEncoding:enc];
    return [da length];
}

二,输出。

2015-10-19 15:36:43.730 判断中英文混合的字符长度的两种方法[9311:234111] --first-9
2015-10-19 15:36:43.736 判断中英文混合的字符长度的两种方法[9311:234111] --second--9
时间: 2024-12-27 08:42:53

【代码笔记】判断中英文混合的字符长度的两种方法的相关文章

javascript 判断数组中的重复内容的两种方法 by FungLeo

javascript 判断数组中的重复内容的两种方法 by FungLeo 前言 一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true 否则,返回 false. 思路 把数组变成字符串 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复 如何拿A字符串和B字符串进行对比,并且要求判断出B字符串中包含过个A字符串呢? 方法一 indexOf() 和 lastIndexOf() 对比法. 首先,我们构建代码:

判断中英文混合的字符串长度

代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //第一种方法 NSLog(@"--first-%i",[self convertToInt:@"123我爱你"]); //第二种方法 NSLog(@"--second--%ld",[self getToInt

【代码笔记】向服务器传JSON数据的两种方式

一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法,是把要传的参数组合成一个数组,然后由JSONKit把字典转为字符串 NSDictionary* jsonDic = [NSDictionary dictionaryWithObjectsAndKeys:@"李华",@"name",@"女&quo

java中按字节获得字符串长度的两种方法

jdk本身就自带获取字符串字节长度的api了,但字符串如果包含特殊符号或全半角符号或标点符号获取到的结果会有偏差,最好的证据就是新浪微博的字数统计了 // jdk自带的获取字节长度 //注意getBytes()默认获取的是以文件编码格式的bytes,通常都是UTF-8(可以看api),不同编码格式的bytes,获取到的长度也不同,本人亲自测试过,建议获取有指定编码格式的bytes长度,如:getBytes("UTF-8") int length = new String().getBy

判断一组数之中的最大数的两种方法

方法一:条件运算符 boolean_expression ? true_value : false_value; JS代码: <span style="font-size:14px;">var iNum=[23,100,5,89,4,89]; var iMax=iNum[0]; for(i=1;i<iNum.length-1;i++){ iMax=(iMax>iNum[i])?iMax:iNum[i]; } alert(iMax)</span> 方法

确定字符互斥的两种方法

#include <iostream> #include <string> #include <string.h> #include <stdio.h> #include <malloc.h> #include "list.h" using namespace std; //确定字符互异方法1-通过string实现 (本质都是通过"遍历"实现) //确定字符互异:确定一个字符串的所有字符是否全都不同. //

判断单链表是否有环的两种方法

如图,如果单链表有环,则在遍历时,在通过6之后,会重新回到3,那么我们可以在遍历时使用两个指针,看两个指针是否相等. 方法一:使用p.q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样.如图,当p从6走到3时,用了6步,此时若q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环 方法二:使用p.q两个指针,p每次向前走一步,q每次向前走两步,若在某个时候p == q,则存在环. 代码如下: 1 #include <stdio.h> 2 #inc

判断单链表是否有环的两种方法(转)

如图,如果单链表有环,则在遍历时,在通过6之后,会重新回到3,那么我们可以在遍历时使用两个指针,看两个指针是否相等. 方法一:使用p.q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样.如图,当p从6走到3时,用了6步,此时若q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环方法二:使用p.q两个指针,p每次向前走一步,q每次向前走两步,若在某个时候p == q,则存在环. #include <stdio.h> #include <st

android笔记之在WebView中显示ProgressBar的两种方法

http://blog.csdn.net/liuzhidong123/article/details/6450334