大小写字母快速转换

问题

如果要在大小写之间转换,如何提高速度?

思路

让我们观察大小写字母的ASCII码:

大写字母 ASCII_DEC ASCII_BIN ASCII_BIN ASCII_DEC 小写字母
A 65 01 0 00001 01 1 00001 97 a
B 66 01 0 00010 01 1 00010 98 b
Z 90 01 0 11010 01 1 11010 122 z

测试代码

#include <stdio.h>
#include <stdlib.h>

void A2a(char * C) {
    for (int i = 0; C[i] != ‘\0‘; i++) C[i] |= 32;  // 0100000
}

void a2A(char * C) {
    for (int i = 0; C[i] != ‘\0‘; i++) C[i] &= 95;  // 1011111
}

void a2A_A2a(char * C) {
    for (int i = 0; C[i] != ‘\0‘; i++) C[i] ^= 32;  // 0100000
}

int main() {

    char C1[98] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    char C2[98] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    char C3[98] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    printf("A2a:\n");
    printf("Before: %s\n\n", C1);
    A2a(C1);
    printf("After : %s\n\n", C1);
    printf("------------------------------------------------------------\n\n");

    printf("a2A:\n");
    printf("Before: %s\n\n", C2);
    a2A(C2);
    printf("After : %s\n\n", C2);
    printf("-------------------------------------------------------------\n\n");

    printf("a2A_A2a:\n");
    printf("Before: %s\n\n", C3);
    a2A_A2a(C3);
    printf("After : %s\n\n", C3);

    system("pause");

    return 0;
}

测试结果

弊端

注意这里只能在字母之间转换,当文本含有其他字符的时候,会将“无辜”的字符变成奇奇怪怪的字符。

时间: 2024-08-05 00:30:40

大小写字母快速转换的相关文章

Java中关于大小写字母的转换

方法一: 大小写字母在ascii码表中相减的值为32 故可将字符串转车字符数组 小写转大写减32 大写转小写加32 String s= "good"; char[] c = s.toCharArray; //首字母大写 c[0]-=32; 方法二 String类中的 toLowerCase()将单词所有字母小写 toUpperCase()将单词所有字母大写 substring()截取某个字母并结合以上方法转换

大小写字母的转换

String中有这些个方法: 1.toUpperCase() 将字符串中的每个字母转为大写 2.toLowerCase()将字符串中的每个字母转为小写 通过这两个函数,我们就可以对英文字符串进行大小写的转换. var str = 'tracy'; toUpper( str ); // 转为大写 function toUpper( str ){ var result = str.toUpperCase(); console.log(result); } // 转为小写 var sstr = 'LE

大小写字母的转换,C语言实现

★编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出. #include<stdio.h> int main() { char c; while ((c = getchar()) != EOF) { if ((65 <= c) && (c <= 91))        //大写字母转换为小写字母 { printf("%c", c + 32); } else if (

用C语言编程实现大小写字母的转换

include 版权声明:本文为博主原创文章,未经博主允许不得转载.

c语言字符串大小写字母转换

输入一个以#结束的字符串,本题要求将小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其它字符不变. 输入格式: 输入在一行中给出一个长度不超过40的.以#结束的非空字符串. 输出格式: 在一行中按照要求输出转换后的字符串. 输入样例: Hello World! 123# 输出样例: hELLO wORLD! 123 源代码: #include <stdio.h> int main (){      char ch;  do{        ch=getchar();        i

C语言 大小写字母转换

//凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 方法1: 1 #include<stdio.h> 2 #include<stdlib.h> 3 //大小写字母隔了32位 4 void main(){ 5 char ch,t; 6 printf("Please input a letter:\n"); 7 ch=getchar(); 8 t=getchar(); //吸收回车键 9 10 while((ch<'A

汇编语言-字母字符转换

1. 题目:大小写字母字符互换 2. 要求:从键盘输入一个字符,如果该字符是回车符,直接退出程序,如果是小写字母,则转换为大写字母并显示:如果是大写字母,则转换为小写字母并显示:如果是非字母字符,则显示提示信息,并等待用户重新输入字符. 3. 提示: 首先判断是否是回车符,如果不是,则判断是否是大写字母或小写字母,如果是进行转换并输出,否则显示重新输入.大写字母ASCII码与小写字母ASCII之间相差20H,可以根据这个进行转换. 1 ; Example assembly language pr

老男孩教育每日一题-2017年5月4日-有一个oldboy.txt文件,把里面所有字母都转换成大写

老男孩教育每日一题-2017年5月4日-有一个oldboy.txt文件,把里面所有字母都转换成大写 文件内容如下: [[email protected] oldboy]# cat oldboy.txt  oldboy.blog.51cto.com www.oldboyedu.com 方法一:sed [[email protected] oldboy]# sed 's#[a-z]#\u&#g' oldboy.txt OLDBOY.BLOG.51CTO.COM WWW.OLDBOYEDU.COM 方

JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容

实现效果: 图一: 图二: 此例中输入的中文字符串"万万保重",有三个字是多音字,所以alert对话框中显示的是多种读音的组合: 如何实现? 如何实现通过拼音首字母快速查找页面内的中文内容呢? 过程原理是这样的:例如要对一些人名进行快速查找,当页面加载完成后,对所有人名建立一个索引,生成拼音首字母与姓名的对应关系:然后监听键盘事件,当用户按下键盘时,根据键值得到按下的是哪个字母,然后遍历索引中是否存在相同的拼音首字母: 这里还实现了根据字母组合来查找的功能,原理是这样的:当用户按键时,