首页 > 其他分享 >day10 - 字符串

day10 - 字符串

时间:2024-06-21 21:58:23浏览次数:15  
标签:String System println day10 字符串 public out

目录

1.API

1.1 API概述

1.2 如何使用API帮助文档

2.String类

2.1 String类概述

2.2 String类的特点

2.3 String类的构造方法

2.4 创建字符串对象两种方式的区别

2.5 字符串的比较

2.5.1 ==号的作用

2.5.2 equals方法的作用

2.6用户登录案例

2.6.1案例需求

2.6.2代码实现

2.7遍历字符串案例

2.7.1案例需求

2.7.2直接遍历字符串

2.8统计字符次数案例

2.8.1案例需求

2.8.2代码实现

2.9字符串拼接案例

2.9.1案例需求

2.9.2代码实现

2.10字符串反转案例

2.10.1案例需求

2.10.2代码实现

2.11 金额转换

2.11.1 案例需求

2.11.2 代码实现

2.12 手机号屏蔽

2.13 身份证信息查看

2.14 敏感词替换

3.StringBuilder

3.1 基本使用

3.2 链式编程

3.3 练习1:对称字符串

3.4 练习2:拼接字符串

4. StringJoiner

关于字符串的小扩展:


1.API

1.1 API概述

  • 什么是API

    API (Application Programming Interface) :应用程序编程接口

  • java中的API

    指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。

1.2 如何使用API帮助文档

  • 打开帮助文档

  • 找到索引选项卡中的输入框

  • 在输入框中输入Random

  • 看类在哪个包下

  • 看类的描述

  • 看构造方法

  • 看成员方法

2.String类

2.1 String类概述

String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!

2.2 String类的特点

  • 字符串不可变,它们的值在创建后不能被更改

  • 虽然 String 的值是不可变的,但是它们可以被共享

  • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

2.3 String类的构造方法

  • 常用的构造方法

    方法名说明
    public String()创建一个空白字符串对象,不含有任何内容(最常用)
    public String(char[] chs)根据字符数组的内容,来创建字符串对象
    public String(byte[] bys)根据字节数组的内容,来创建字符串对象
    String s = “abc”;直接赋值的方式创建字符串对象,内容就是abc
  • 字符数组创建字符串的应用场景:修改字符串的内容。                                                              字节数组创建字符串的应用场景:在网络中传输的数据其实都是字节信息,我们一般要把字节信息转换成字符串。

  • 示例代码

    public class StringDemo01 {
        public static void main(String[] args) {
            //public String():创建一个空白字符串对象,不含有任何内容
            String s1 = new String();
            System.out.println("s1:" + s1);//""
            //public String(char[] chs):根据字符数组的内容,来创建字符串对象
            char[] chs = {'a', 'b', 'c'};
            String s2 = new String(chs);
            System.out.println("s2:" + s2);//"abc"
    ​
            //public String(byte[] bys):根据字节数组的内容,来创建字符串对象
            byte[] bys = {97, 98, 99};
            String s3 = new String(bys);
            System.out.println("s3:" + s3);//"abc"(ASCII码表)
    ​
            //String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
            String s4 = "abc";
            System.out.println("s4:" + s4);//"abc"
        }
    }

2.4 创建字符串对象两种方式的区别

  • 通过构造方法创建

    通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同

  • 直接赋值方式创建

    以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一个 String 对象,并在字符串池中维护。                                                        系统会检查该字符串在串池中是否存在,如果不存在就创建新的,如果存在就复用。

2.5 字符串的比较

2.5.1 ==号的作用
  • 比较基本数据类型:比较的是具体的值

  • 比较引用数据类型:比较的是对象地址值

2.5.2 equals方法的作用
  • 方法介绍

    比较两个字符串内容是否相同、区分大小写
    public boolean equals(String s)  
    比较两个字符串内容是否相同、不区分大小写(只能是英文状态下的,如Aa)   
    public boolean equalslgnoreCase(String s)     
  • 示例代码

    public class StringDemo02 {
        public static void main(String[] args) {
            //构造方法的方式得到对象
            char[] chs = {'a', 'b', 'c'};
            String s1 = new String(chs);
            String s2 = new String(chs);
    ​
            //直接赋值的方式得到对象
            String s3 = "abc";
            String s4 = "abc";
    ​
            //比较字符串对象地址是否相同
            System.out.println(s1 == s2);
            System.out.println(s1 == s3);
            System.out.println(s3 == s4);
            System.out.println("--------");
    ​
            //比较字符串内容是否相同
            System.out.println(s1.equals(s2));
            System.out.println(s1.equals(s3));
            System.out.println(s3.equals(s4));
        }
    }

2.6用户登录案例

2.6.1案例需求

已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示

2.6.2代码实现
public class Test1 {
    public static void main(String[] args) {
        //1.定义两个变量用来记录正确的用户名和密码
        String rightUsername = "itheima";
        String rightPassword = "1234qwer";
​
        //2.键盘录入用户名和密码
        //ctrl + alt + T 选择包裹方式
​
        for (int i = 0; i < 3; i++) {//0 1 2
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名");
            String username = sc.next();
            System.out.println("请输入密码");
            String password = sc.next();
​
            //3.判断比较
            if (username.equals(rightUsername) && password.equals(rightPassword)) {
                System.out.println("登录成功");
                //如果正确,循环结束
                break;
            } else {
                //最后一次机会
                if(i == 2){
                    System.out.println("账户" + username + "被锁定,请联系黑马程序员官方小姐姐:XXXXXXX");
                }else{
                    //不是最后一次机会
                    System.out.println("用户名或密码错误,登录失败,还剩下" + (2 - i) + "次机会");//2 1 0
                }
            }
        }
​
    }
}

2.7遍历字符串案例

2.7.1案例需求

键盘录入一个字符串,使用程序实现在控制台遍历该字符串

2.7.2直接遍历字符串

  两个方法:
        charAt():会根据索引获取对应的字符
        length(): 会返回字符串的长度 

public class Test2字符串直接遍历 {
    public static void main(String[] args) {
​
        //1.键盘录入一个字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        String str = sc.next();
        System.out.println(str);
​
        //2.遍历
        for (int i = 0; i < str.length(); i++) {
            //i 依次表示字符串的每一个索引
            //索引的范围:0 ~  长度-1
​
            //根据索引获取字符串里面的每一个字符
            //ctrl + alt + V 自动生成左边的接受变量
            char c = str.charAt(i);
            System.out.println(c);
        }
    }
}
​

2.8统计字符次数案例

2.8.1案例需求

键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)

2.8.2代码实现
public class Test4统计个数 {
    public static void main(String[] args) {
  
        //1.键盘录入一个字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = sc.next();
​
​
        //2.统计 --- 计数器count
        //此时我要统计的有3样东西,所以要定义3个计数器分别进行统计
        int bigCount = 0;
        int smallCount = 0;
        int numberCount = 0;
        //得到这个字符串里面每一个字符
        for (int i = 0; i < str.length(); i++) {
            //i 表示字符串中的索引
            //c 表示字符串中的每一个字符
            char c = str.charAt(i);
​
            //对c进行判断
            if (c >= 'a' && c <= 'z') {
                smallCount++;
            }else if(c >= 'A' && c <= 'Z'){
                bigCount++;
            }else if(c >= '0' && c <= '9'){
                numberCount++;
            }
        }
​
        //3.当循环结束之后,三个变量记录的就是对应的个数
        System.out.println("大写字符有:" + bigCount + "个");
        System.out.println("小写字符有:" + smallCount + "个");
        System.out.println("数字字符有:" + numberCount + "个");
    }
}
​

2.9字符串拼接案例

2.9.1案例需求

定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,

并在控制台输出结果。例如,数组为 int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

2.9.2代码实现
public class Test5数组拼接成字符串 {
    public static void main(String[] args) {
​
        int[] arr = {1, 2, 3, 4, 5};
​
        String str = arrToString(arr);
        System.out.println(str);
​
    }
​
​
    //作用:把一个数组变成字符串
    public static String arrToString(int[] arr) {
        String s = "";
        //拼接左括号
        s = s + "["; //此时是拿着长度为0的字符串,跟[进行拼接,产生一个新的字符串。
                     //把新的字符串再赋值给s,此时变量s记录的就是新的字符串"["的地址值
​
        //下面我想得到数组里面的每一个元素并进行拼接
        //那么就需要遍历数组,得到每一个元素才行
        for (int i = 0; i < arr.length; i++) {
            //假设第一次循环:i = 0 获取的就是0索引上的元素
            //在拼接的时候:"[" + 1 + ", " 拼接完毕之后产生一个新的字符串 "[1, "
            //第二次循环:i = 1 获取的就是1索引上的元素
            //在拼接的时候: 此时s就是第一次循环结束后拼接完毕的结果:"[1, "
            //在拼接的时候:"[1, " + 2 + ", " 拼接完毕之后产生一个新的字符串 "[1, 2, "
            //...
           if(i == arr.length - 1){
               //如果是最后一个元素,那么不需要拼接逗号空格
               s = s + arr[i];
           }else{
               //如果不是最后一个元素,需要拼接元素和逗号空格
               s = s + arr[i] + ", ";
           }
        }
​
        //等循环结束之后,再拼接最后一个右括号
        s = s + "]";
​
        return s;
​
    }

2.10字符串反转案例

2.10.1案例需求

定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果

例如,键盘录入 abc,输出结果 cba

2.10.2代码实现
public class Test6反转字符串 {
    public static void main(String[] args) {
​
        //1.定义一个字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = sc.next();
        //2.定义一个方法,反转字符串
        //abc  --->  cba
        //可以把字符串倒着遍历,再拼接
        String result = reverse(str);
        System.out.println(result);
​
​
    }
​
    //注释:方法的作用就是反转字符串
    //把传递进来的字符串进行反转
    public static String reverse(String str){//abc
        //核心思想:倒着遍历并进行拼接就可以了
        //fori :正着遍历  forr:倒着遍历
        String s = "";
        for (int i = str.length() - 1; i >= 0; i--) {
            //i 依次表示字符串里面的每一个索引(倒着的)
            //我们就可以拿到里面的每一个字符并拼接
            s = s + str.charAt(i);
        }
​
        //把倒着拼接之后的结果返回即可
        return s;
​
    }
}
​

2.11 金额转换

2.11.1 案例需求

把2135变成:零佰零拾零万贰仟壹佰叁拾伍元

把789变成:零佰零拾零万零仟柒佰捌拾玖元

2.11.2 代码实现
package com.itheima.stringdemo;
​
import java.util.Scanner;
​
public class StringDemo9 {
    public static void main(String[] args) {
        //1.键盘录入一个金额
        Scanner sc = new Scanner(System.in);
        int money;
        while (true) {
            System.out.println("请录入一个金额");
            money = sc.nextInt();
            if (money >= 0 && money <= 9999999) {
                break;
            } else {
                System.out.println("金额无效");
            }
        }
​
        //定义一个变量用来表示钱的大写
        String moneyStr = "";
​
        //2.得到money里面的每一位数字,再转成中文
        while (true) {//2135
            //从右往左获取数据,因为右侧是数据的个位
            int ge = money % 10;
            String capitalNumber = getCapitalNumber(ge);
            //把转换之后的大写拼接到moneyStr当中
            moneyStr = capitalNumber + moneyStr;
            //第一次循环 : "伍" + "" = "伍"
            //第二次循环 : "叁" + "伍" = "叁伍"
            //去掉刚刚获取的数据
            money = money / 10;
​
            //如果数字上的每一位全部获取到了,那么money记录的就是0,此时循环结束
            if (money == 0) {
                break;
            }
        }
​
        //3.在前面补0,补齐7位
        int count = 7 - moneyStr.length();
        for (int i = 0; i < count; i++) {
            moneyStr = "零" + moneyStr;
        }
        System.out.println(moneyStr);//零零零贰壹叁伍
​
        //4.插入单位
        //定义一个数组表示单位
        String[] arr = {"佰","拾","万","仟","佰","拾","元"};
        //               零    零   零   贰   壹   叁   伍
​
        //遍历moneyStr,依次得到 零    零   零   贰   壹   叁   伍
        //然后把arr的单位插入进去
​
        String result = "";
        for (int i = 0; i < moneyStr.length(); i++) {
            char c = moneyStr.charAt(i);
            //把大写数字和单位拼接到result当中
            result = result + c + arr[i];
        }
​
        //5.打印最终结果
        System.out.println(result);
​
    }
​
​
    //定义一个方法把数字变成大写的中文
    //1 -- 壹
    public static String getCapitalNumber(int number) {
        //定义数组,让数字跟大写的中文产生一个对应关系
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        //返回结果
        return arr[number];
    }
​
}
​

2.12 手机号屏蔽

需求:以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽

最终效果为:131****9468

方法:String.substring(int beginIndex,int endIndex) 截取 

           包头不包尾,包左不包右。只有返回值是截取的小串,字符串本身不发生变化。

           String.substring(int beginIndex) 默认截取到末尾

代码实现:

public class Test8手机号屏蔽 {
    public static void main(String[] args) {
        /*以字符串的形式从键盘接受一个手机号,将中间四位号码屏蔽
        最终效果为:131****9468*/
​
        //1.键盘录入一个手机号码
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入手机号码");
        String phoneNumber = sc.next();//13112349408
​
        //2.截取手机号码中的前三位
        String star = phoneNumber.substring(0, 3);
​
        //3.截取手机号码中的最后四位
        //此时我用substring方法,是用1个参数的,还是两个参数的?1个参数的会更好
        //因为现在我要截取到最后,所以建议使用1个参数的。
        String end = phoneNumber.substring(7);
​
        //4.拼接
        String result = star + "****" + end;
​
        System.out.println(result);
​
    }
}
​

2.13 身份证信息查看

身份证的每一位都是有固定的含义:

  • 1、2位:省份

  • 3、4位:城市

  • 5、6位:区县

  • 7-14位:出生年、月、日

  • 15、16位:所在地派出所

  • 17位:性别(奇数男性,偶数女性)

  • 18位:个人信息码(随机产生)

要求打印内容方式如下:

人物信息为:

出生年月日:XXXX年X月X日

性别为:男/女

package com.itheima.stringdemo;
​
public class StringDemo11 {
    public static void main(String[] args) {
        //1.定义一个字符串记录身份证号码
        String id = "321281202001011234";
​
        //2.获取出生年月日
        String year = id.substring(6, 10);
        String month = id.substring(10, 12);
        String day = id.substring(12, 14);
​
​
        System.out.println("人物信息为:");
        System.out.println("出生年月日:" + year + "年" + month + "月" + day + "日");
​
        //3.获取性别
        char gender = id.charAt(16);//'3'  ---> 3
        //利用ASCII码表进行转换
        //'0' --->  48
        //'1' --->  49
        //'2' --->  50
        //'3' --->  51
        //'4' --->  52
        //'5' --->  53
        //'6' --->  54
        //'7' --->  55
        //'8' --->  56
        //'9' --->  57
​
       int num = gender - 48;
        if(num % 2 == 0){
            System.out.println("性别为:女");
        }else{
            System.out.println("性别为:男");
        }
    }
}

2.14 敏感词替换

方法: String.replace(旧值,新值) 替换

            只有返回值是替换后的字符串,字符串本身不发生变化。

需求1:键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换

public class Test9敏感词替换 {
    public static void main(String[] args) {
        //1.定义一个变量表示骂人的话
        String talk = "后裔你玩什么啊,TMD";
​
​
        //2.把这句话中的敏感词进行替换
        String result = talk.replace("TMD", "***");
​
        //3.打印
        System.out.println(talk);
        System.out.println(result);
    }
}

需求2:如果要替换的敏感词比较多怎么办?

public class Test10多个敏感词替换 {
    public static void main(String[] args) {
        //实际开发中,敏感词会有很多很多
​
        //1.先键盘录入要说的话
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要说的话");
        String talk = sc.next();//后裔你玩什么啊,TMD,GDX,ctmd,ZZ
​
        //2.定义一个数组用来存多个敏感词
        String[] arr = {"TMD","GDX","ctmd","ZZ","lj","FW","nt"};
​
        //3.把说的话中所有的敏感词都替换为***
​
        for (int i = 0; i < arr.length; i++) {
            //i 索引
            //arr[i] 元素 --- 敏感词
            talk = talk.replace(arr[i],"***");
        }
​
        //4.打印结果
        System.out.println(talk);//后裔你玩什么啊,***,***,***,***
​
    }
}
​

3.StringBuilder

StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。

当我们在拼接字符串和反转字符串的时候会使用到

空参构造:StringBuilder sb = new StringBuilder();

有参构造:StringBuilder sb = new StringBuilder("abc");

常用方法 :public StringBuilder append(任意类型)   添加数据,并返回对象本身

                   public StringBuilder reverse()   反转

                   public int length()   返回长度

                   public String toString()   将StringBuilder转换为String

3.1 基本使用

public class StringBuilderDemo3 {
    public static void main(String[] args) {
        //1.创建对象
        StringBuilder sb = new StringBuilder("abc");
​
        //2.添加元素
        sb.append(1);//添加整数元素
        sb.append(2.3);//添加浮点数元素
        sb.append(true);//添加boolean类型元素
​
        //3.反转
        sb.reverse();
​
        //4.获取长度
        int len = sb.length();
        System.out.println(len);
​
​
        //5.打印
        //普及:
        //因为StringBuilder是Java已经写好的类
        //java在底层对他做了一些特殊处理。
        //打印对象不是地址值而是属性值。
        System.out.println(sb);

        //6.把StringBuilder变回字符串
        String s = sb.toString();
        System.out.println(s);
    }
}

3.2 链式编程

不定义变量接受方法的返回值,而是直接利用返回值继续调用其他方法。 

public class StringBuilderDemo4 {
    public static void main(String[] args) {
        //1.创建对象
        StringBuilder sb = new StringBuilder();
​
        //2.添加字符串
        sb.append("aaa").append("bbb").append("ccc").append("ddd");
​
        System.out.println(sb);//aaabbbcccddd
​
        //3.再把StringBuilder变回字符串
        String str = sb.toString();
        System.out.println(str);//aaabbbcccddd
​
    }
}

3.3 练习1:对称字符串

需求:

键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是

对称字符串:123321、111
​
非对称字符串:123123

代码示例:

public class StringBuilderDemo6 {
    //使用StringBuilder的场景:
    //1.字符串的拼接
    //2.字符串的反转
​
    public static void main(String[] args) {
        //1.键盘录入一个字符串
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str = sc.next();
​
        //2.反转键盘录入的字符串
        String result = new StringBuilder().append(str).reverse().toString();
​
        //3.比较
        if(str.equals(result)){
            System.out.println("当前字符串是对称字符串");
        }else{
            System.out.println("当前字符串不是对称字符串");
        }
​
    }
}

3.4 练习2:拼接字符串

需求:定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回。

调用该方法,并在控制台输出结果。

例如:数组为int[] arr = {1,2,3};

执行方法后的输出结果为:[1, 2, 3]

代码示例:

package com.itheima.stringbuilderdemo;
​
public class StringBuilderDemo7 {
    public static void main(String[] args) {
        //1.定义数组
        int[] arr = {1,2,3};
​
        //2.调用方法把数组变成字符串
        String str = arrToString(arr);
​
        System.out.println(str);
​
    }
​
​
    public static String arrToString(int[] arr){
        StringBuilder sb = new StringBuilder();
        sb.append("[");
​
        for (int i = 0; i < arr.length; i++) {
            if(i == arr.length - 1){
                sb.append(arr[i]);
            }else{
                sb.append(arr[i]).append(", ");
            }
        }
        sb.append("]");
​
        return sb.toString();
    }
}

4. StringJoiner

  • StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。

  • 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。

  • JDK8出现的

有参构造:StringBuilder sb = new StringBuilder(间隔符号);

                  StringBuilder sb = new StringBuilder(间隔符号,开始符号,结束符号);

常用方法 :public StringJoiner add(添加的内容:只能添加字符串)   添加数据,并返回对象本身

                   public int length()   返回长度(字符的个数)

                   public String toString()   将StringJoiner转换为String

基本使用:

//1.创建一个对象,并指定中间的间隔符号
StringJoiner sj = new StringJoiner("---");
//2.添加元素
sj.add("aaa").add("bbb").add("ccc");
//3.打印结果
System.out.println(sj);//aaa---bbb---ccc
//1.创建对象
StringJoiner sj = new StringJoiner(", ","[","]");
//2.添加元素
sj.add("aaa").add("bbb").add("ccc");
int len = sj.length();
System.out.println(len);//15
//3.打印
System.out.println(sj);//[aaa, bbb, ccc]
String str = sj.toString();
System.out.println(str);//[aaa, bbb, ccc]

关于字符串的小扩展:

  1. 字符串存储的内存原理

    String s = “abc”;直接赋值

    特点:

    此时字符串abc是存在字符串常量池中的。

    先检查字符串常量池中有没有字符串abc,如果有,不会创建新的,而是直接复用。如果没有abc,才会创建一个新的。

    所以,直接赋值的方式,代码简单,而且节约内存。

  2. new出来的字符串

    看到new关键字,一定是在堆里面开辟了一个小空间。

    String s1 = new String(“abc”);

    String s2 = “abc”;

    s1记录的是new出来的,在堆里面的地址值。

    s2是直接赋值的,所以记录的是字符串常量池中的地址值。

  3. ==号比较的到底是什么?

    如果比较的是基本数据类型:比的是具体的数值是否相等。

    如果比较的是引用数据类型:比的是地址值是否相等。

    结论:==只能用于比较基本数据类型。不能比较引用数据类型。

标签:String,System,println,day10,字符串,public,out
From: https://blog.csdn.net/m0_67703159/article/details/139842787

相关文章

  • Java-英语字符串进行单词分割
    (摘自头歌)任务描述将一段英语字符串进行单词分割。相关知识需要掌握:如何将字符串进行分割。String.split()拆分字符串lang包String类的split()方法publicString[]split(Stringregex)publicString[]split(Stringregex,intlimit)//limit参数控制模式应用的次数,因......
  • 【C语言初学指导】进阶知识 指针、数组与字符串
    指针指针是一种特殊的变量,它存储的是另一个变量的内存地址,而不是数据值本身。这个地址指向了内存中的一个特定位置,程序可以通过这个地址来访问或修改存储在该位置的数据。举个例子:intvar=10;//假设var住在内存里的101号房间int*ptr=&var;//ptr就是我们......
  • 编写一个C程序,使得读取输入的字符串,统计并输出字符串中大写字母、小写字母、数字和其
    #include<stdio.h>#include<string.h>intmain(){   charstr[100];    //赋予字符长度为100的存储空间   inti,uppercase=0,lowpercase=0,number=0,other=0;    //变量初始化   printf("请输入字符串:");   gets(str);    ......
  • P1098 [NOIP2007 提高组] 字符串的展开
    注意三种情况: 1.开头结尾的-,例:-abc--2.-两侧必须同为小写字母或同为数字例;A-a3.对数字不能进行大小写转换#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#include<cmath>#include<algorithm>#defineFor(i,j,n)for(inti=j......
  • Python 入门 —— 字符串
    Python入门——字符串文章目录Python入门——字符串基本操作创建字符串字符串访问内置函数字符串格式化百分号格式化`format`函数模板字符串正则表达式基本字符特殊字符边界匹配数量词字符集捕获组扩展标记法扩展模式非捕获版本命名分组添加注释环视条件匹配:`......
  • C++数据格式化5 - uint转换成十六进制字符串&二进制的data打印成十六进制字符串
    1.关键词2.strfmt.h3.strfmt.cpp4.测试代码5.运行结果6.源码地址1.关键词关键字:C++数据格式化字符串处理std::stringinthex跨平台应用场景:int型的数据打印成十六进制字符串二进制的data打印成十六进制字符串。2.strfmt.h#pragmaonce#include<stri......
  • 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度
    /*请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数)函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。*/#include<stdio.h>char*fun(char*buff,char*str){intbuff_len=0,str_len=0;while(bu......
  • m2_day10 [IO流]
    课程内容:Reader和WriterFileReader和FileWriterBufferedReader和BufferedWriterPrintStream和PrintWriterPrintWriter相较于BufferedWriter强大之处Reader和WriterReader所有字符输入流统一的父类抽象类intread()intread(char[]data)in......
  • C++数据格式化6 - uint转换成二六进制字符串
    1.关键词2.strfmt.h3.strfmt.cpp4.测试代码5.运行结果6.源码地址1.关键词C++数据格式化字符串处理std::stringintbin跨平台2.strfmt.h#pragmaonce#include<string>#include<cstdint>#include<sstream>#include<iomanip>namespacecutl{......
  • C++数据格式化5 - uint转换成十六进制字符串&二进制的data打印成十六进制字符串
    1.关键词2.strfmt.h3.strfmt.cpp4.测试代码5.运行结果6.源码地址1.关键词关键字:C++数据格式化字符串处理std::stringinthex跨平台应用场景:int型的数据打印成十六进制字符串二进制的data打印成十六进制字符串。2.strfmt.h#pragmaonce#include<......