大小写字母快速转换

| 收藏本文 下载本文 作者:Dearsickalien

以下文章小编为您整理的大小写字母快速转换(共含8篇),供大家阅读。同时,但愿您也能像本文投稿人“Dearsickalien”一样,积极向本站投稿分享好文章。

大小写字母快速转换

篇1:大小写字母快速转换

问题

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

思路

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

大写字母ASCII_DECASCII_BINASCII_BINASCII_DEC小写字母A6501 0 0000101 1 0000197aB6601 0 0001001 1 0001098b………………Z9001 0 1101001 1 11010122z

测试代码

#include#includevoid 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;}

测试结果

弊端

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

大小写字母快速转换

篇2:Word大小写字母转换(批量)

如果要把文档中的大写字母转换成小写,小写字母转换成大写,可用如下方法,

①用Ctrl+A组合键选择要转换的整个文档,或用鼠标选择要转换的部分文档,选择“格式→更改大小写”命令,

②在弹出的“更改大小写”窗口中选择“转换大小写”,单击“确定”按钮。

小提示:如果要把文档中的字母统统转换成小写或大写,可在“更改大小写”窗口中选择“大写”或“小写”。

如果需要将原先输入的大写或小写字母进行转换,可以选定要转换大小写的一段英文字母,然后按下Shift+F3组合键即可完成在大写、小写和首字母大写之间的转换。

篇3:妙用Word 轻松转换句首字母大小写

在英文资料中,一般都要求句首字母大写,如果一篇文档比较长,需要改变的字母比较多,那么这将是一件非常麻烦的事。下面我们就和大家一起来解决这个麻烦事。

由于很多文档都是从网页上复制的,因此会有很多空格。对此第一步就是删除空格。将文本复制到Word中后打开“编辑”菜单中的“替换”命令,在“查找内容”中输入“. ”(英文句号和一个空格),在“替换为”中输入“.”,然后单击“全部替换”按钮即可将所有多余的空格都删除。

同时Word中更改大小写是要求句子末尾有空格的,因此我们还需要将每个以“.”标点的后面添加一个空格。再次打开“替换”窗口,在“查找内容”中输入“.”,在“替换为”处输入“. ”(英文句号和一个空格),单击“全部替换”按钮,

很多朋友不明白,为什么进行两个相反的替换。其实第一次替换是将多余的空格删除,第二次替换是在每个句末只添加一个空格。

做好两次替换后,我们只需要打开“编辑”菜单,选择“全选”命令将文档全部选中,然后再打开“格式”菜单,选择“句首字母大写”并单击“确定”按钮即可完成转换工作。更多的Word操作技巧大家可以参考www.it8g.com/JiaoCheng/09/1801.htm一文所介绍的方法。

热门推荐:强制视频软件泛滥 网友家中遭偷拍QQ号码买卖玩家的阴谋

点击阅读更多学院相关文章>>

分享到

篇4:办公技巧:Word中快速转换大小写

Word中快速转换大小写,在编辑输入工作中精彩要切换大小写,每次都要去俺大小写切换按键真的非常的麻烦,有没有方便快捷的方法,比如快捷键呢,

转换大小写:选中文字,按 Shift+F3。

篇5:C++大小写转换和性能

大小写转换和性能

前言

本文主要讨论最基本的一些大小写转换函数和API,不讨论一些常见的字符串程序库里面的大小写转换接口,另外本文的落脚点是这些转换函数的性能和日常开发中遇到的一些问题,

不考虑范围

其实ctype.h里面有定义一套宏,就是不考虑字符是否落在A-Z,a-z范围,直接计算(直接用加减法或者使用位与或计算,差别不是很大)。显然这样的效率是最高的,但是使用可能是有问题的,遇到中文或者其他友邦的一些字符,可能就转换错了,当然如果已经提前确认过输入会落在A-Z,a-z范围,则是可以使用这种方法计算的。

#define _tolower(_Char) ( (_Char)-'A'+'a' )

#define _toupper(_Char) ( (_Char)-'a'+'A' )

C库(MS)

转小写

tolower

towlower

_tolower_l

_towlower_l

转大写

toupper

towupper

_toupper_l

_towupper_l

C库没有提供直接转换整个字符串的函数,都只能转换单个字符。另外要注意的是提供的towlower和towupper这两个函数效率出奇的低,为什么效率低没有去深究,反正tolower和toupper的参数是int,也可以用于宽字符版本,不知道为什么还提供towlower和towupper这两个函数。

C++库(MS)

转小写

errno_t _strlwr_s(char* str, size_t numberOfElements);

errno_t _wcslwr_s(wchar_t* str, size_t numberOfElements);

转大写

errno_t _strupr_s(char* str, size_t numberOfElements);

errno_t _wcsupr_s(wchar_t* str, size_t numberOfElements);

同时还提供了一套同名的模版函数,可以直接只传递字符数组名进行转换,原理是利用数组引用推导出了数组大小,再调用原始转换函数,微软在字符串处理函数里面,使用了很多类似的小技巧(crtdefs.h)。

注:带_s后缀的表示是安全转换。

__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wcslwr_s, __inout_ecount(_Size)wchar_t, _String)

#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName,_DstType, _Dst) \

extern “C++” \

{ \

template\

inline \

_ReturnType __CRTDECL _FuncName(_DstType (&_Dst)[_Size])\

{ \

return _FuncName(_Dst, _Size);\

} \

}

Windows API

转小写

CharLower

CharLowerBuff

转大写

CharUpper

CharUpperBuff

WindowsAPI大部分都是一些宏,对应的多字节版本和宽字符版本在上面的API后面加上A和W。

STL库

STL里面的string没有提供专门的转换接口,但是借助STL里面的算法用类似下面的方法实现(转换函数可以自定义,也可以使用系统提供的函数),这个不多说。

transform(strCostInfo2.begin, strCostInfo2.end(), strCostInfo2.begin(),::tolower);

transform(strCostInfo2.begin(), strCostInfo2.end(), strCostInfo2.begin(),::toupper);

自己实现(考虑范围)

//////////////////////////////////////////////////////////////////////////

static const char s_ch_a_minus_A = 'a' - 'A';

inline char ConvToUpperA(char chConv)

{

return (chConv >= 'a' && chConv <= 'z')? (chConv & 0xdf) : chConv;

}

inline wchar_t ConvToUpperW(wchar_t wchConv)

{

return (wchConv >= L'a' && wchConv<= L'z') ? (wchConv & 0x00df) : wchConv;

}

inline char ConvToLowerA(char chConv)

{

return (chConv >= 'A' && chConv <= 'Z')? (chConv | 0x20) : chConv;

}

inline wchar_t ConvToLowerW(wchar_t wchConv)

{

return (wchConv >= L'A' && wchConv<= L'Z') ? (wchConv | 0x0020) : wchConv;

}

inline void ConvStrToUpperA(char* strConv)

{

for (size_t i = 0; strConv[i] != '\0'; ++i)

{

//if(strConv[i] >= 'a'&& strConv[i] <= 'z')

// strConv[i] &= 0xdf;

strConv[i] = ConvToUpperA(strConv[i]);

}

}

inline void ConvStrToUpperW(wchar_t* strConv)

{

for (size_t i = 0; strConv[i] != L'\0'; ++i)

{

//if(strConv[i] >=L'a' && strConv[i] <= L'z')

// strConv[i] &= 0x00df;

strConv[i] = ConvToUpperW(strConv[i]);

}

}

inline void ConvStrToLowerA(char* strConv)

{

for (size_t i = 0; strConv[i] != '\0'; ++i)

{

//if(strConv[i] >= 'A'&& strConv[i] <= 'Z')

// strConv[i]|= 0x20;

strConv[i] = ConvToLowerA(strConv[i]);

}

}

inline void ConvStrToLowerW(wchar_t* strConv)

{

for (size_t i = 0; strConv[i] != L'\0'; ++i)

{

//if(strConv[i] >=L'A' && strConv[i] <= L'Z')

// strConv[i] |= 0x0020;

strConv[i] = ConvToLowerW(strConv[i]);

}

}

和直接转换的区别就在于只对A-Z,a-z范围的字符进行转换,有一定局限性,但是在大部分场景下是可用的,而且效率够好,

性能

说了这么多转换方法,其实我最关心的那种方法的效率最高,直接上测试程序和测试环境吧,让数据说话。

测试环境

Windows7 x64 SP1

AMD Phenom(tm) II X4 840T(4核)

10G内存

测试基本方法

对长度1024字节(不包括结尾0)的字符串进行大小写轮换转换,循环百万次,统计时间。

测试结果

====>大小写转换函数时间消耗(循环1000000次)<====

直接计算(不考虑范围):[1077] 毫秒

C库函数:[6193]毫秒

C++库函数:[5912]毫秒

STL算法库模版函数(自定义转换):[3557] 毫秒

STL算法库模版函数(系统转换):[6146] 毫秒

自定义的函数:[3791] 毫秒

Windows API:[13884] 毫秒

====>大小写转换函数时间消耗(循环1000000次)<====

直接计算(不考虑范围):[1076] 毫秒

C库函数:[6272]毫秒

C++库函数:[5865]毫秒

STL算法库模版函数(自定义转换):[3292] 毫秒

STL算法库模版函数(系统转换):[6053] 毫秒

自定义的函数:[3666] 毫秒

Windows API:[13790] 毫秒

多次测试结果表明,显然不考虑范围是最快的,但是可用场景太少,其次就是自定义的大小写转换函数了(像中文之类也没有大小写之说,只需要考虑有限的ascii字符),配合STL的容器和算法可以最大化效率。WindowsAPI的效率则比较低,当然效率低的原因并不是算法的问题,而是考虑的情况比较多,譬如要考虑本地化,考虑一些语种特殊的大小写转换问题等等。

在合适的场景下,使用自定义的大小写转换是完全足够,研究这个花了大约半天时间,问题源于一个URL处理函数的性能问题,经过统计发现,这个函数的大量计算消耗在了URL转小写上面,经过改造之后,性能轻松提升60%。

篇6:巧用Excel 转换人民币大小写

要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的“[dbnum2]G/通用格式”改为“[dbnum2] G/通用格式“元””来实现,

要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的“[dbnum2]G/通用格式”改为“[dbnum2] G/通用格式“元””来实现。但在转换小数时却出现了问题,比如¥6,050.09只能转换为“陆仟零伍拾.零玖圆”。那么用Excel能不能解决这一先天不足呢?其方法有以下两种(以下均对B1转换,假设B1是通过函数ROUND( )四舍五入取得二位小数的小写金额数,其值为¥6,050.09)。

一、在三个连续的同行单元格中转换      ()

1. B2中输入公式 “=IF(B1<0,“金额为负无效”,INT(B1))”,计算结果为¥6,050.00,然后点击“格式→单元格→数字→特殊→中文大写数字→ 确定”,B2显示“陆仟零伍拾”,再点击“格式→单元格→数字→自定义”,将“类型”编辑框中的“[dbnum2]G/通用格式”修改为: [dbnum2](“人民币”)G/通用格式“元”,此时B2显示:“(人民币)陆仟零伍拾元”。

2. C2中输入“=IF(B1<0,“”,INT(B1??10)-INT(B1)??10)”,同样C2改为:[DBNum2]G/通用格式“角”,C2显示:“零角”。

3. D2中输入“=IF(B1<0,“”,INT(B1??100)-INT(B1??10)??10)”,同样D2改为:[DBNum2]G/通用格式“分”, D2显示:“玖分”,

这样在连续的三个同行单元格中实现了大写金额格式的转换。为了使转换符合财务格式,B2应右对齐,C2列宽无间隔,且不设左右边框线,D2要左对齐。

二、用Excel提供的函数转换

个位为0,则不显示;不为0,显示“XXX元”;不为0、且角位和分位均为0,显示“XXX元整”;元角分位均为0,则显示“零元整”。

小数点后面第一位为0、且元位或分位有一为0,则不显示;为0、且元位和分位均不为0,则显示“零”;不为0,显示“X角”。

小数点后面第二位为0,则显示“整”;不为0,显示“X分”。

根据以上思路在B2中输入公式:

“IF(B1<0,“金额为负无效”,IF(OR(B1=0,B1=“”),“(人民币)零元整”));

IF(B1<1,“(人民币)”,TEXT(INT(B1),“[dbnum2](人民币)G/通用格式”)&&“元”)&&IF(INT(B1??10)-INT(B1)??10=0);

IF(INT(B1)??(INT(B1??100)-INT(B1??10)??10)=0,“”,“ 零”),TEXT(INT(B1??10)-INT(B1)??10,“[dbnum2]”)&&“ 角”)&&IF((INT(B1??100)-INT(B1??10)??10)=0,“ 整”,TEXT((INT(B1??100)-INT(B1*10)*10),“[dbnum2]”)&&“分”)))”。

确认后B2显示:“(人民币)陆仟零伍拾元零玖分”。以后使用时将公式复制到有关单元格中,若转换的对象B1发生了变化,可点击“编辑→替换”将B1替换掉。

篇7:Word入门动画教程129:改变字母大小写

在某些Word文档中,有时需要改变已录英文的大小写、全半角状态,更改大小写功能可以快速地完成 这些工作。方法如下:

1.选定要改变大小写的字符。

2.执行“格式”→“更改大小写”,打开“更改大小写”对话 框。

3.在此对话框中,根据需要进行以下选择:

“句首字母大写”:将所选文本的第一个单词的第一个字母改为大写。

“小写”:将选择文本的所有字母改为小写。

“大写”:将选择文本的所有字母改为大写。

“词首字母大写”:将选择文本中每个单词的第一个字母改为大写,

“切换大小写”:将所选文本中的大写字母转换为小写字母,小写字母转换为大写字母。

“半角”:将选定的字母全部转换为半角,对数字以及常用符号同样有效。

“全角”:将选定的字母全部转换为全角,对数字以及常用符号同样有效。

4.单击“确定”按钮。

提示:选定文字后,按Shift+F3可以在“句首字母大写”、“全部大写”以及 “全部小写”间相互转换;按Ctrl+Shift+A可在“全部大写”和“全部小写 ”间切换。

具体操作的动画演示过程如下:

返回Word入门教程目录页

篇8:巧用Excel 轻松转换人民币大小写

要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的“[dbnum2]G/通用格式”改为“[dbnum2] G/通用格式“元””来实现,

要将人民币小写金额转换成大写格式,用Excel提供的格式,将自定义格式类型中的“[dbnum2]G/通用格式”改为“[dbnum2] G/通用格式“元””来实现。但在转换小数时却出现了问题,比如¥6,050.09只能转换为“陆仟零伍拾.零玖圆”。那么用Excel能不能解决这一先天不足呢?其方法有以下两种(以下均对B1转换,假设B1是通过函数ROUND( )四舍五入取得二位小数的小写金额数,其值为¥6,050.09)。

一、在三个连续的同行单元格中转换

1. B2中输入公式 “=IF(B1<0,“金额为负无效”,INT(B1))”,计算结果为¥6,050.00,然后点击“格式→单元格→数字→特殊→中文大写数字→确定”,B2显示“陆仟零伍拾”,再点击“格式→单元格→数字→自定义”,将“类型”编辑框中的“[dbnum2]G/通用格式”修改为:[dbnum2](“人民币”)G/通用格式“元”,此时B2显示:“(人民币)陆仟零伍拾元”。

2. C2中输入“=IF(B1<0,“”,INT(B1??10)-INT(B1)??10)”,同样C2改为:[DBNum2]G/通用格式“角”,C2显示:“零角”。

3. D2中输入“=IF(B1<0,“”,INT(B1??100)-INT(B1??10)??10)”,同样D2改为:[DBNum2]G/通用格式“分”, D2显示:“玖分”。

这样在连续的三个同行单元格中实现了大写金额格式的转换。为了使转换符合财务格式,B2应右对齐,C2列宽无间隔,且不设左右边框线,D2要左对齐。

二、用Excel提供的函数转换

个位为0,则不显示;不为0,显示“XXX元”;不为0、且角位和分位均为0,显示“XXX元整”;元角分位均为0,则显示“零元整”,

小数点后面第一位为0、且元位或分位有一为0,则不显示;为0、且元位和分位均不为0,则显示“零”;不为0,显示“X角”。

小数点后面第二位为0,则显示“整”;不为0,显示“X分”。

根据以上思路在B2中输入公式:

“IF(B1<0,“金额为负无效”,IF(OR(B1=0,B1=“”),“(人民币)零元整”));

IF(B1<1,“(人民币)”,TEXT(INT(B1),“[dbnum2](人民币)G/通用格式”)&&“元”)&&IF(INT(B1??10)-INT(B1)??10=0);

IF(INT(B1)??(INT(B1??100)-INT(B1??10)??10)=0,“”,“零”),TEXT(INT(B1??10)-INT(B1)??10,“[dbnum2]”)&&“角”)&&IF((INT(B1??100)-INT(B1??10)??10)=0,“整”,TEXT((INT(B1??100)-INT(B1*10)*10),“[dbnum2]”)&&“分”)))”。

确认后B2显示:“(人民币)陆仟零伍拾元零玖分”。以后使用时将公式复制到有关单元格中,若转换的对象B1发生了变化,可点击“编辑→替换”将B1替换掉。

经过这样简单的调整后,就可以轻松的将人民币小写变成大写了。在www.it8g.com/JiaoCheng/200811/4893.htm同样介绍了将货币数字转换成大写的方法,有兴趣的朋友可以参考一下。

热门推荐:手把手教你用Excel管理学生成绩重复打印EXCEL首行标题

点击阅读更多学院相关文章>>

分享到

妙用Word 轻松转换句首字母大小写

linux shell字母转换写法

excel快速转化数字金额大小写excel办公/数码

大小写字母表

拼音大小写对照表

汉语拼音字母表大小写

26个字母反思

英语字母谜语

字母教学课件

雅思考试听力大小写问题有哪些

大小写字母快速转换(共8篇)

欢迎下载DOC格式的大小写字母快速转换,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档