2019-04-09 18:42:40 TauCrus 阅读数 313

开发过程中,经常需要处理大小写转换,vim提供了方便的转换方法,下面是对应的指令。

  • 转换当前光标下的字母 ~
  1. 普通模式下,使用 ~ 可以将切换字母的大小写
  2. 可以使用 数字加 ~ 改变光标后面几个字母的大小写
    普通模式 10~ (切换光标后10个字母的大小写)
  3. 如果要使用 ~ 改变整行的大小写,可以使用
    普通模式 g ~~ (改变整行的大小写)

  • 使用 gu或者gU 切换大小写
  1. 普通模式 gUU (将当前行的字母改成大写)
    普通模式 10gUU (将从光标开始到下面10行字母改成大写)
  2. 普通模式 guu (将当前行的字母全改成小写)
    普通模式 10guu (将从光标开始到下面10行字母改成小写写)
  3. 普通模式 gUw/gUe (将光标下的单词改成大写)
    普通模式 gU10w/gU10e (转换10个单词为大写)
  4. 普通模式 guw/gue (将光标下的单词改成小写)
    普通模式 gu10w/gu10e (转换10个单词的为小写)
  5. 普通模式 ggguG (将整篇文章大写转化为小写)
  6. 普通模式 gggUG (整篇文章小写转化为大写)
2016-04-14 15:01:50 lilil371324 阅读数 6269

linux C/C++中,只有char的大小写转换,没有char*的大小写转化,string的大小写转换通过char的大小写转换完成

1. char 大小写转换

#include <iostream>  
#include <string>  
#include <string.h> 
for (char* ptr = the_str; *ptr; ptr++) {  
    *ptr = tolower(*ptr);  //转小写
    //*ptr = toupper(*ptr);  //转大写
  }  

tolower/toupper只能用于单个字符转换,不能用于字符串转换。

2. string大小写转换

 #include <string>  
 #include <algorithm> 
transform(str.begin(), str.end(), str.begin(), (int (*)(int))tolower);//转小写
//transform(str.begin(), str.end(), str.begin(), ::tolower);//转小写两种方式都可以
transform(str.begin(), str.end(), str.begin(), (int (*)(int))toupper);//转大写

不能直接使用:

transform(str.begin(), str.end(), str.begin(),tolower);

但在使用g++编译时会报错:

对‘transform(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, <unresolved overloaded function type>)’ 的调用没有匹配的函数。
这里出现错误的原因是Linux将toupper实现为一个宏而不是函数:
/usr/lib/syslinux/com32/include/ctype.h:
/* Note: this is decimal, not hex, to avoid accidental promotion to unsigned */
#define _toupper(__c) ((__c) & ~32)
#define _tolower(__c) ((__c) | 32)
__ctype_inline int toupper(int __c)
{
return islower(__c) ? _toupper(__c) : __c;
}
__ctype_inline int tolower(int __c)
{
return isupper(__c) ? _tolower(__c) : __c;
}

两种解决方案:
第一种:

transform(str.begin(), str.end(), str.begin(), (int (*)(int))toupper);

或者:

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

第二种:自己实现tolower//tolower的函数

3.char * 大小写转换

char*的大小写转换string过度完成大小写的转换过程

#include <string>  
#include <algorithm> 
char *tok;
string str=posParse;
const int len = str.length();
tok = new char[len+1];
transform(str.begin(), str.end(), str.begin(), (int (*)(int))tolower);//转小写
//transform(str.begin(), str.end(), str.begin(), ::tolower);//转小写两种方式都可以
transform(str.begin(), str.end(), str.begin(), (int (*)(int))toupper);//转大写
strcpy(tok,str.c_str());
2019-04-18 09:13:09 qq_37312496 阅读数 1143

linu 把文件中的字母小写转换为大写,大写转换为小写awk toupper tolower

1、tr命令转换小写为大写

     cat aa.txt|tr "[a-z]" "A-Z"

     tr命令大写转换小写

     cat aa.txt|tr "A-Z" "a-z"

2、awk命令函数 toupper 小写转换大写

[root@ob2 mytmp]# awk '{print toupper($0)}' aa2.txt 
ETH0      LINK ENCAP:ETHERNET  HWADDR 00:0C:29:2B:B9:55  
          INET ADDR:192.168.79.130  BCAST:192.168.79.255  MASK:255.255.255.0
          INET6 ADDR: FE80::20C:29FF:FE2B:B955/64 SCOPE:LINK

   tolower(str)

awk命令函数 tolower 大写转换小写

[root@ob2 mytmp]# awk '{print tolower($0)}' aa2.txt 
eth0      link encap:ethernet  hwaddr 00:0c:29:2b:b9:55  
          inet addr:192.168.79.130  bcast:192.168.79.255  mask:255.255.255.0

2012-02-03 18:02:36 zzumsh 阅读数 236

有两种方式:

 

1。用tr

 

    例如:UPPERCASE=$(echo $VARIABLE | tr '[a-z]' '[A-Z]')   (把VARIABLE的小写转换成大写)

            LOWERCASE=$(echo $VARIABLE | tr '[A-Z]' '[a-z]')   (把VARIABLE的大写转换成小写)

 

2。用typeset

 

    typeset -u VARIABLE  (把VARIABLE的小写转换成大写)

    typeset -l  VARIABLE  (把VARIABLE的大写转换成小写)

 

    例如:typeset -u VARIABLE

            VARIABLE="True"

            echo $VARIABLE

            输出为TRUE

2018-05-14 19:47:05 u014042372 阅读数 1923
tycs@LY1F-R021708-VM08:[/home/tycs]cat /etc/hosts | tr A-Z a-z
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

192.168.20.162 ly1f-r021708-vm08.local ly1f-r021708-vm08
tycs@LY1F-R021708-VM08:[/home/tycs]
没有更多推荐了,返回首页