iOS 中英文字符串混排的字符串,测试长度

本文介绍如何在iOS应用中使用UITextField并实时监测输入文本的字节数,包括中文字符按不同字节计数的方法。通过添加观察者监听UITextField的变化,并实现计算文本长度的两种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在xib中创建一个UITextField,并声明为全局变量

@property (weak, nonatomic) IBOutlet UITextField *inputTextFiled;

2.在ViewDidLoad方法中添加通知

 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFieldTextDid:) name:UITextFieldTextDidChangeNotification object:nil];

3,实现textFieldTextDid:方法。

-(void)textFieldTextDid:(NSNotification *)sender

{

    UITextField *textField = (UITextField *)[sender object];

    NSString *str = textField.text;

    //-个中文一个字节,2个英文和符号一个字节

    int length1 = [self convertToInt:str];

    NSLog(@"-个中文一个字节,2个英文和符号一个字节:%d",length1);

    //-个中文2个字节,1个英文和符号一个字节

    NSInteger length =  [self getLengthWithStr:str];

    NSLog(@"-个中文2个字节,1个英文和符号一个字节:%zi",length);

    //NSLog(@"%zi",[str length]);

   


}


-(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+1)/2;

    

}

-(NSInteger)getLengthWithStr:(NSString *)str

{

    NSStringEncoding strEncode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

    NSData *data = [str dataUsingEncoding:strEncode];

    NSInteger length = [data length];

    return length;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值