精华内容
下载资源
问答
  • C++里单引号的表示一个字符,例如字母a,在程序中以’a’表示,双引号表示一个字符串,例如”abc” 里面是’a’,’b’,’c’,还会有一个字符串截止符’\0’。初始化字符数组时若用双引号,会报错“初始值设定项太...

    编程小白写点博客记录自己的成长

    C++写了一个统计输入字符串各个大写字母的个数(小写字母稍微修改一下就可以了)。写程序时发现三个问题,这里记录下来。

    1、单引号和双引号的区别。C++里单引号的表示一个字符,例如字母a,在程序中以’a’表示,双引号表示一个字符串,例如”abc” 里面是’a’,’b’,’c’,还会有一个字符串截止符’\0’。初始化字符数组时若用双引号,会报错“初始值设定项太多”,应该改为单引号。

    这里写图片描述

    2、定义变量时要进行初始化,下面程序中若未对out[26]初始化,则输出的out[j]为地址。

    这里写图片描述

    3、gets函数从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,可能会发生溢出。改用fgets(char * s, int n,FILE *stream);

    参数:
    s: 字符型指针,指向存储读入数据的缓冲区的地址。
    n: 从流中读入n-1个字符
    stream : 指向读取的流。
    这里用到从标准设备读数据,fgets(s,n,stdin);

    下面贴出代码:

    #include<iostream>
    using namespace std;
    void main(){
      char input[1000];
      int i=0,out[26]={0},j;
      char outstring[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
      cout<<"Please input capital password:";
      fgets(input,1000,stdin);
      while(input[i]){
         if(input[i]>='A'&&input[i]<='Z'){
             out[input[i]-'A']++;
         }
         i++;
      }
      cout<<"输出:"<<endl;
      for(j=0;j<26;j++){
          cout<<outstring[j]<<" : "<<out[j]<<endl;
      }
    }

    PS:再贴出一个统计输入数字中各个数字的个数的代码

    #include<iostream>
    using namespace std;
    void main(){
        int m,i=0,a[10]={0};
        cout<<"Please input number:";
        cin>>m;
        while(m!=0){
            i=m%10;
            a[i]++;
            m=m/10;
        }
        for(int j=0;j<10;j++){
            cout<<j<<" : "<<a[j]<<endl;
        }
    }
    展开全文
  • 字符串是一种特别重要的类型, 可以说整个世界都是建立在字符串处理基础之上的, 甚至有很专门针对字符串处理设计的编程语言(比如perl). 因为字符串处理非常重要, Go语言将字符串作为值以简化使用, 同时标准库提供了...

    a1bfa721bfca5a6e5f47f2c74ada568e.png

    字符串是一种特别重要的类型, 可以说整个世界都是建立在字符串处理基础之上的, 甚至有很多专门针对字符串处理设计的编程语言(比如perl). 因为字符串处理非常重要, Go语言将字符串作为值以简化使用, 同时标准库提供了strings/fmt/strconv/regexp/template等诸多包用于协助处理字符串.

    1. 基本用法

    Go语言中字符串是一个不可修改的字节序列, 如果要做类比的话可以看作是一个只读的byte数组类型. 字符串有两种方式构建: 第一种是在代码中通过双引号包括起来的字符串字面值, 这是编译前就知道了字符串的内容; 另一种是在运行时通过代码运行动态产生的字符串.

    因为Go语言源代码要求是UTF8编码, 因此字符串面值的内容也是UTF8编码的. 为了方便面值字符串的遍历, Go语言的for range内置了对UTF8的支持:

    for i, c := range "hello, 世界" {
        // ...
    }

    其中i是字符所在的索引下标,  c表示Unicode字符的值(对应int32类型). 因为UTF8是一种变长的编码, 因此每次i的步进长度是变化的, 每次步进的是前当前字符串对应UTF8编码的长度.

    此外字符串语法还支持切片、链接和获取某个下标字节值的功能, 比如:

    var s = "光谷码农 - https://guanggu-coder.cn/"
    var c = s[0// 获取字节值, 而不是字符对应的Unicode值
    var x = s[:len(s)-1] + "abc"

    字符串不仅仅可以作为字面值, 还可以当做二进制数组使用, 这时候可以用于保存任意类型的数据:

    var s = "\xe4\xb8\x96" // 世
    var x = []byte{0xE40xB80x96}
    var s = string(x)

    字符串的基本用法大家都是熟悉的, 我们这里不再向西展开.

    2. 内部表示

    Go语言字符串的底层结构在reflect.StringHeader中定义:

    type StringHeader struct {
        Data uintptr
        Len  int
    }

    字符串结构由两个信息组成:第一个是字符串指向的底层字节数组,第二个是字符串的字节的长度。字符串其实是一个结构体,因此字符串的赋值操作也就是reflect.StringHeader结构体的复制过程,并不会涉及底层字节数组的复制。

    需要注意的是字符串的头部结构是切片头部结构的前缀(只是缺少了cap表示的容量部分), 这是为了便于[]byte类型的切片和字符串相互之间的转化.

    3. 其它类型转换

    这里讨论是底层有着不同数据布局的类型和字符串的相互转换. 如果是基于字符串重新定义的类型不在讨论之列.

    Go语言中和字符串相关的内置转换主要有三种类型: 首先是字符转为字符串, 其次是字符串和字节切片的转换, 最后是字符串和rune切片的转换.

    字符到字符串的转换时单向操作(无法从字符串反向转为字符), 下面的例子中是从“a”这个字符的ASCII值转为字符串“a”:

    fmt.Println(string(97))       // a
    fmt.Println(string(rune(97))) // a
    fmt.Println(string('a'))      // a

    在第一行语句中, 97是一个无具体类型的数值类型的字面值常量. 在遇到string强制转型时, 只有rune类型可以和无具体类型的数值类型建立关系, 因此97被捕获为rune类型的常量, 也就是第二个语句的方法. 第三个语句中'a'rune(97)对应字符的字面值写法.

    然后是字符串和字节切片的相互转换:

    var s = string([]byte{979899}) // abc
    var x = []byte("abc")

    因为字节切片和字符串底层的数据布局是相融的, 因此这种转换一般有着较高的优化空间(前提是不能破坏字符串只读的语义).

    内置转换的语法中最特殊的是字符串和rune切片的转换:

    var s = string([]rune{979899}) // abc
    var x = []rune("abc")

    rune其实是int32类型的别名, 因此换成以下写法会发现其特殊之处:

    var s = string([]int32{979899}) // abc
    var x = []int32("abc")

    Go语言居然内置了字符串和int32切片的转型操作, 而这个操作是有相当的复杂度的(具体要涉及内存分配和UTF8字符串编码解码, 时间复杂度和长度相关)! 很多人如果看到上面代码可行, 自然会下意识将int32推广为其它整数类型的切片. 但是这只是字符串为int32开的一个特例(所以说Go语言也不是完全正交的设计, 有不是补丁特性).

    除了内置的转换之外, 字符串还进程需要和其它bool/int等类型的转换. 这里大部分也是双向的转换, 不过我们重点讨论其他类型到字符串的转换. strconv包提供了很多这类转换操作:

    s := strconv.Itoa(-42)

    s10 := strconv.FormatInt(v, 10)
    s16 := strconv.FormatInt(v, 16)

    s := strconv.FormatBool(true)

    其中Itoa是Int-to-ASCII的缩写, 表示整数到字符串转换, 采用十进制模式转换.  而FormatInt则可以用于指定进制进行转换. 此外FormatBool等用于其他数值类型的转换.

    strconv的转换实现性能较好. 如果不在意这转换操作这一点点的性能损耗, 可以通过fmt.Sprintf来实现到字符串的转换(fmt.Sscanf可解析, 但是打破了链式操作的便捷性):

    i := fmt.Srpintf("%v"-42)
    b := fmt.Srpintf("%v"true)

    fmt包会通过反射识别输入参数的类型, 然后以默认的方式转换为字符串.

    此外, 对于字符串本身也提供了一种转换, 就是字符串和字符串面值格式. 比如以下代码:

    q := strconv.Quote(`"hello"`)     // "\"hello\""
    q := fmt.Sprintf("%q"`"hello"`// "\"hello\""

    输出的字符串会有一个双引号包裹, 内部的特殊符号会采用转义语法表示, 它对应fmt包中%q格式的输出.

    更进一步, 为了方便不支持中文的环境也能处理, 还可以选择完全用ASCII方式表示字符串面值:

    q := strconv.Quote(`"世"`)      // "\"\u4e16\""
    q := fmt.Sprintf("%+q"`"世"`// "\"\u4e16\""

    其中“世”已经超出ASCII值域, 因此通过\u???语法通过Unicode码点值表示, , 它对应fmt包中%+q格式的输出.

    4. 字符串替换

    字符串处理中除了涉及其他类型和字符串之间相互转换, 另一种经常遇到的是将一个字符串处理为另一个字符串. 标准库中strings包提供了诸多字符串处理函数.

    比如, 将字符串改成大写字符串:

    var s = strings.ToUpper("Gopher"// GOPHER

    这其实是将字符串中某些子串根据某种指定的规则替换成新的字符串.

    我们可以通过strings.Map来重新实现ToUpper的功能:

    strings.Map(func(r rune) rune { return r &^ ' ' }, "Gopher"))

    strings.Map会遍历字符串中的每个字符, 然后通过第一参数传入的函数转换为新的字符, 最后构造出新的字符串. 而字符转换函数只有一个语句r &^ ' ', 作用是将小写字母转为大写字母.

    strings.Map函数的输出是根据输入字符动态生成输出的字符, 但是这种替换是一个字符对应一个字符, 因此输出的字符串长度输入的字符串是一样的.

    字符层面的替换是比较简单的需求. 更多时候我们需要将一个子串替换为一个新的子串. 子串的替换虽然看似功能强大, 但是因为没有统一的遍历子串的规则, 因此标准库并没有类似strings.Map这样方便的函数.

    简单的替换可以通过strings. Replace完成:

    fmt.Println(strings.Replace("oink oink oink""k""ky"2))
    fmt.Println(strings.Replace("oink oink oink""oink""moo"-1))

    上面是strings自带的例子. strings.Replace的第一个参数是输入的字符串, 第二个是要替换的子串, 第三个是用了替换的子串, 最后一个参数表示要替换几个子串.
    如果替换规则稍微复杂一点, strings.Replace就比较难以实现了.

    复杂的替换可以通过regexp的包完成:

    regexp.MustCompile(`a(x*)b`).ReplaceAllString("-ab-axxb-""T")
    // -T-T-

    如果满足a(x*)b模式的子串将被替换为新的子串.

    5. 模板输出

    字符串替换其实是模板的雏形. 我们可以通过字符串替换来构造一个简单的模板:

    func ReplaceMap(s string, m map[string]string) string {
        for old, new := m {
            s = strings.Replace(s, old, new-1)
        }
        return s
    }

    func main() {
        var s = ReplaceMap(`{a}+{b} = {c}`map[string]string{
            "a"1"b"2"c"3,
        })
    }

    通过{name}来表示要替换的子串, 然后通过map来定一个子串替换表格.

    基于类型的技巧, 我们可以将{name}定义为子串的查找规则, 这样我们将得到一个子串列表:

    func MapString(s string,
        mapping func(x string)
     string,
    string
     {
        re := regexp.MustCompile(`\{\w+\}`)
        for _, old := range re.FindAllString("{name}{age}"-1) {
            s = strings.Replace(s, old, mapping(old), -1)
        }
    }

    既然能够得到子串列表, 那么就可以仿造strings.Map的接口, 通过一个转换函数来实现子串的替换(函数比表格更加灵活).

    如果结合反射机制, 完全可以基于一个接口类型输出转换表格:

    func RenderTemplate(s string, data interface{}) string {
        return MapString(s, func(filedName string) string {
            // 通过反射, 根据 filedName 从 data 获取数据
        })
    }

    当然, 这种模板比较粗糙, 没有实现结构化编程中分支和循环等语句的支持. 完整的模板可以查看标准库的template包实现. template包是一个较大的话题, 有机会的话会在新的文章中专门讨论.

    展开全文
  • python中字符串方法

    2020-08-26 11:12:31
    可用加法(+)操作符,将多个字符(bytes)串在一起。 字符串乘法: 倍数打印 改变大小写: 改变大小写 可使用字符串的upper方法,将字符串中的每个字符大写。 可使用字符串的lower方法将字符串中的每个字符为小写...

    理论上,理论和实践没有区别。但实践上,是有区别的。

    Python 自带操作字符串的功能,例如在指定位置将字符串分割为两部分,或者改变字符串的大小写。假设有一个所有字符都是大写的字符串,现在希望将其全部改为小写,这通过 Python 可以轻松实现。

    字符串是不可变的。

    字符串拼接:

    可用加法(+)操作符,将多个字符(bytes)串在一起。

    字符串乘法:

    倍数打印

    改变大小写:

    改变大小写

    可使用字符串的upper方法,将字符串中的每个字符改为大写。

    可使用字符串的lower方法将字符串中的每个字符改为小写。

    可使用字符串的capitalize方法,将字符串的首字母改为大写。

    可使用字符串的title方法,将字符串的每个单词首字母改为大写。

    格式化:

    format方法格式化,还可以把变量作为参数传递。也可以多个位置格式化。

    分割:

    字符串有一个叫split的方法,可用来将字符串分割为两个或多个字符串。

    连接:

    join方法可以在字符串的每个字符间添加新字符;

    也可以在空字符串上调用 join 方法;

    还可以在包含空格符的字符串上调用 join方法。

    去除空格:

    可使用strip方法去除字符串开头和末尾的空白字符

    替换:

    在 replace方法中,第一个参数是要被替换的字符串,第二个参数是用来替换的字符串。

    查找索引:

    可使用index方法,获得字符串中某个字符串第一次出现的索引。

    in关键字:

    关键字in可检查某个字符串是否在另一个字符串中,返回结果为True或False。

    字符串转义:

    用反斜杠\表示转义。

    字符串转义(escaping),指的是在Python中有特殊意义的字符前加上一个符号,告诉Python该符号代表的是一个字符,而没有特殊意义。

    换行符:

    在字符串中加入\n来表示换行

    \t是制表符

    切片:

    切片(slicing)可将一个可迭代对象中元素的子集,创建为一个新的可迭代对象。 切片的语法是[可迭代对象][[起始索引 : 结束索引]。

    切片时包含起始索引位置的元素,但不包括结束索引位置的元素。

    展开全文
  • Python之字符串

    2018-04-24 09:32:02
    1.使用方法修改字符串的大小写title():以首字母大写的方式显示每单词,即将每单词的首字母改为大写upper():将字符串改为全部大写lower():将字符串改为全部小写注:存储数据时,lower()很有用。很时候你无法...

    1.使用方法修改字符串的大小写
    • title():以首字母大写的方式显示每个单词,即将每个单词的首字母改为大写
    • upper():将字符串改为全部大写
    • lower():将字符串改为全部小写

    注:存储数据时,lower()很有用。很多时候你无法依靠用户来提供正确的大小写,因此需要将字符串全部转为小写来存储它们

    2.合并(拼接)字符串
            Python使用 + 来拼接字符串

    3.使用制表符或换行符来添加空白

    展开全文
  • 字符串方法

    2018-10-28 10:59:11
    说到字符串,原来它有这么方法啊,为我们以后写程序提供了很大的便利。下面是一些方法,总结了一下,与大家共享:   ToCharArray:可以把字符串变成一个字符数组,可以修改里面其中的值。 ToUpper :将字符串...
  • Python字符串的方法

    2018-07-16 16:13:25
    这里我就简单的整理一下Python中字符串的方法,方法太,后边不想写了,看英文应该知道功能方法 含义 capitalize() 把字符串的第一个字符改大写 casefold() 把字符串的所有字符为小写 center(width) 字符串居中...
  • 类可以完成很的常见的任务,如替换字符串、删除空白字符串和把字母变成大写形式等。 String类是功能非常强大的类,它实现许多有用的方法。但是,String类存在一问题:重复修改给定的字符串,...
  • 【C#】-字符串

    2018-07-10 09:35:25
    看到字符串这块,方法实在是太了,特别容易记混了,好像自己都记住了的样子,但是下次再看到的时候总是感觉似曾相识,那就把这些方法总结一下吧。 ToCharArray 可以把字符串变成一的字段数组,可以修改...
  • python的字符串操作

    2018-08-26 10:40:00
    1.修改大小写 (1)title()以首字母大写的方式显示每单词,即将...(2)upper() / lower() 可以将字符串改为全部大写或全部小写, 其中,存储数据时,方法lower()很有用。很时候,你无法依靠用户来提供正确的...
  • 1.创建一个字符串 str1 = 'I love FishC.com' str1 2.将字符串第一个字符大写–capitalize() str2 = 'xiaoxie' str2.capitalize() # 该方法不会改变原字符串,返回一个新的字符串 3.把整个字符串的所有字符...
  • 转自fishC论坛:http://bbs.fishc.com/forum.php?mod=viewthread&tid=38992&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403 ...把字符串的第一个字符改大写,英文中用的,...
  • 元组,字符串,字典

    2017-10-20 18:01:00
    第三天 一、元组 等同于只读列表,元组是不能...字符串的方法很: name.captialize()#首字母大写 name.count("t")#计算字符串中传递的参数含有的个数 name.center(100,"+")#主要用于格式化输出,总长100...
  • Redis---字符串的操作

    2020-06-23 22:47:42
    文章目录set的时候设置生命周期一次性设置/获取多个key对字符串的修改对字符串的追加对字符串的截取getset:返回旧值,设置新值对于数字增加和减少将大写字母转换成小写 set的时候设置生命周期 set key value [ex ...
  • 1.capitalize()把字符串的第一个字符改大写 2.casefold()把整个字符串的所有字符改写小写 3.center(width) 将字符串居中,并使用空格填充至长度width的新字符串 4.count(sub[,start[,end]]) 返回sub在字符串...
  • 字符串,列表和safe)过滤器

    千次阅读 2019-01-15 21:29:41
    访问如下:链式使用: (使用|调用多个过滤器), 反转之后再变成大写访问如下代码与对应效果图如下我们来演示几个列表过滤器:safe过滤器 我们修改一点看一个其他的: 将my_str修改为一个h1标签:我们来看一下加不加safe...
  • 在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号 "This is a string." ...**title()**以首字母大写的方式显示每单词,即将每单词的首字母都大写 name = "ada lovelace" p.
  • 链式赋值:同一个对象赋值给多个变量。如x=y=123,相当于:x=123;y=123 python系列解包赋值 系列数据赋值给对应相同个数的变量。如: >>>a,b,c=4,5,6 相当于:a=4;b=5;c=6; 利用系列解包赋值可以实现变量...
  • 1、array_change_key_case(array, CASE_UPPER|CASE_LOWER) 将array数组中的所有键名大写或者小写 2、array_chunk(array, size, bool) 将array数组分割成多个数组,分割后的数组元素个数由size规定,bool设为...
  • 说明:设置显示行的宽度,默认是80个字符 用法:set linesize 120 10. 显示页数 (pagesize) 说明:设置每页显示的行数,默认是14页 用法:set pagesize 20 三、 用户管理 1. 创建用户 说明:Oracle中需要创建用户...
  • 支持更语言,具体参考Visual Studio International Feature Pack 2.0类库InternationalNumericFormatter类这类支持以下的语言: 简体中文 繁体中文 日语 韩语 阿拉伯语 这类支持以下格式化字符串: 标准格式(L...
  • c语言 单词首字母大写

    千次阅读 2020-04-24 15:57:37
    所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式 输入给出一行字符。 输出格式 在一行中输出已输入的字符,其中所有单词的首字母已大写。 示例1 输入 How are you? ...
  • 多个字符串拼接 select CONCAT(‘My’,‘S’,‘QL’); 输出MySQL select CONCAT(列名,列名);两个列合并 +AS ‘自定义列名’ 可以自己设置这个列的名称 字符串替换 select INSERT(旧字符串,起始位置,替换字符...
  • 所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 要求编写程序,输入一行字符,将每个单词的首字母大写并去掉多余空格后输出。即输入时若单词间有多个空格,输出时单词之间只...
  • 单词首字母大写 (5分)

    2020-12-29 15:23:49
    所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中输出已输入的字符,其中所有单词的首字母已大写。 输入样例: How are you? ...
  • 7-5 单词首字母大写 (15分)

    千次阅读 多人点赞 2020-11-11 19:25:08
    所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中输出已输入的字符,其中所有单词的首字母已大写。 输入样例: How are you? ...
  • 数字转换大写

    2010-01-26 21:36:00
    因为是在vb6写的,现在移到vb.net 由于vb6和vb.net 对字符串处理方式不同,所以在vb.net 存在着效率不高的现象,不过现在cpu那么快,懒得修改.有空写vb.net版本.首发qq空间 数字转换大写 函数将输入的阿拉伯数字转
  • // 跳出循环,进行下一个字符 } else if (key == 27) { goto EXIT; // 如果按ESC,退出游戏主循环 } int a; // sprintf(i, "%d", a); /// outtextxy(520,20,i); } /...
  • 众所周知,Spring最为最流行的框架,其源码写得非常棒!!!  Spring注入一类的时候,...办法有很,比如截取字符串改了放回去之类的;这里介绍一最高效的方法。 用的是字符编码相关的知识点。 先上代码: pa
  • 作文

    2020-11-03 14:55:06
    给出若干行字符串表示小张的作文,以EOF结束。保证文章总长度不超过1000000个字符。整篇文章只有大小写英文字母,空格,'.',',','?','!'。并且保证每个标点符号都紧跟前面的单词,单词之间恰好一个空格。 输出 ...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 190
精华内容 76
关键字:

多个字符串改大写