zoukankan      html  css  js  c++  java
  • 字符串处理----《实验楼》练习题

    在/home/project/目录下新建StringUtil.java,你需要实现以下需求:

    1.从控制台输入一行字符串
    2.去除字符串中的所有空格
    3.打印去除空格后的字符串

    示例:

    输入:
        shi ya n  lou
    输出:
        shiyanlou
    

    提示:java.util.Scanner可以获取控制台输入。

    Scanner in =new Scanner(System.in);
    //获取String值
    String a=in.nextLine();
    

    参考代码:

    import java.util.Scanner;
    public class StringUtil {
        public static void main(String[] args) {
            Scanner in =new Scanner(System.in);//创建一个Scanner对象
            String a=in.nextLine();//获取String值
            StringBuilder stringBuilder = new StringBuilder(a);//用StringBuilder比String好用,操作性更强
            for (int i = 0; i < stringBuilder.length(); i++) {
                if (stringBuilder.charAt(i)==' ') {
                    stringBuilder.deleteCharAt(i);
                    i--;
                }else {
                    stringBuilder.charAt(i);
                }
            }
            System.out.println(stringBuilder.toString());
        }
    }
    

    结果:
    在这里插入图片描述

    存在的知识点


    public char charAt(int index)

    返回处于index位置上的字符,index的范围是[0,s.length()-1],字符串中的第一个字符位于index 0上,下一个字符位于index 1上,并以此类推,类似于数组下标索引。这个方法接收一个下标仵为其参数,返回字符串中处在该下标位置的字符。第一个字符在0位置,最后一个字符在长度减1的位置。


    字符串常用处理方法

    1、获取字符串的长度
    length()
    2 、判断字符串的前缀或后缀与已知字符串是否相同
    前缀 startsWith(String s)
    后缀 endsWith(String s)
    3、比较两个字符串
    equals(String s)
    4、把字符串转化为相应的数值
    int 型 Integer.parseInt(字符串)
    long 型 Long.parseLong(字符串)
    float 型 Folat.valueOf(字符串).floatValue()
    double 型 Double.valueOf(字符串).doubleValue()
    5、将数值转化为字符串
    valueOf(数值)
    6、字符串检索
    indexOf(Srting s) 从头开始检索
    indexOf(String s ,int startpoint) 从startpoint 处开始检索
    如果没有检索到,将返回-1
    7、得到字符串的子字符串
    substring(int startpoint) 从startpoint 处开始获取
    substring(int start,int end) 从start 到end 中间的字符
    8、替换字符串中的字符,去掉字符串前后空格
    replace(char old,char new) 用new 替换old
    trim()


    关于spilt定义和用法

    split() 方法用于把一个字符串分割成字符串数组。

    语法

    stringObject.split(separator,howmany)

    参数 描述
    separator

    必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。

    howmany

    可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

    返回值

    一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

    但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。

    提示和注释

    注释:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。


    Java Scanner类

    (以下内容部分取自菜鸟教程网站)

    java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

    下面是创建 Scanner 对象的基本语法:

    Scanner s = new Scanner(System.in);
    

    并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据

    使用next方法:

    import java.util.Scanner; 
     
    public class ScannerDemo {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            // 从键盘接收数据
     
            // next方式接收字符串
            System.out.println("next方式接收:");
            // 判断是否还有输入
            if (scan.hasNext()) {
                String str1 = scan.next();
                System.out.println("输入的数据为:" + str1);
            }
            scan.close();
        }
    }
    

    nextline方法:

    import java.util.Scanner;
     
    public class ScannerDemo {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            // 从键盘接收数据
     
            // nextLine方式接收字符串
            System.out.println("nextLine方式接收:");
            // 判断是否还有输入
            if (scan.hasNextLine()) {
                String str2 = scan.nextLine();
                System.out.println("输入的数据为:" + str2);
            }
            scan.close();
        }
    }
    

    next() 与 nextLine() 区别

    next():

    1、一定要读取到有效字符后才可以结束输入。
    2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
    3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    next() 不能得到带有空格的字符串

    nextLine():

    1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
    2、可以获得空白。
    如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取。

    scan.close();作用

    使用scanner(system.in)时,使用完毕后,一定要关闭扫描器,因为system.in属于IO流,一旦打开,它一直在占用资源,因此使用完毕后切记要关闭。

    scan.hasNext();作用

    hasNext()这个方法是如果此扫描器的输入中有另一个标记则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。
    你可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。
    例:以输入"0",结束输出

    Scanner sc = new Scanner(System.in);
    while (!sc.hasNext("0")) {
    System.out.println(sc.next());
    }
    

    String和StringBuilder的区别

    String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
    初次赋值后,再次赋值时,并不是对原来堆中实例对象进行重新赋值,而是生成一个新的实例对象,并且指向最新生成的实例对象,之前的实例对象仍然存在,如果没有被再次引用,则会被垃圾回收。

    StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。

    StringBuilder strB = new StringBuilder();

    1、append(String str)/append(Char c):字符串连接
    System.out.println(“StringBuilder:”+strB.append(“ch”).append(“111”).append(‘c’));
    //return “StringBuilder:ch111c”

    2、toString():返回一个与构建起或缓冲器内容相同的字符串
    System.out.println(“String:”+strB.toString());
    //return “String:ch111c”

    3、appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回this
    System.out.println(“StringBuilder.appendCodePoint:”+strB.appendCodePoint(2));
    //return “StringBuilder.appendCodePoint:ch111c”

    4、setCharAt(int i, char c):将第 i 个代码单元设置为 c(可以理解为替换)
    strB.setCharAt(2, ‘d’);
    System.out.println(“StringBuilder.setCharAt:” + strB);
    //return “StringBuilder.setCharAt:chd11c”

    5、insert(int offset, String str)/insert(int offset, Char c):在指定位置之前插入字符(串)
    System.out.println(“StringBuilder.insertString:”+ strB.insert(2, “LS”));
    //return “StringBuilder.insertString:chLSd11c”
    System.out.println(“StringBuilder.insertChar:”+ strB.insert(2, ‘L’));
    //return “StringBuilder.insertChar:chLLSd11c”

    6、delete(int startIndex,int endIndex):删除起始位置(含)到结尾位置(不含)之间的字符串
    System.out.println(“StringBuilder.delete:”+ strB.delete(2, 4));
    //return “StringBuilder.delete:chSd11c”

    另:delete方法与deleteCharAt两个方法都是用来删除StringBuffer字符串指定索引字符的方法,

    delete(int a,int b)有两个参数,使用时删除索引从a开始(包含a)到b(不包含b)的所有字符;

    deleteCharAt(int a)只有一个参数,使用时删除索引为a的字符

  • 相关阅读:
    iOS学习笔记:iOS核心动画中的常用类型
    SqlServer中获取数据库中每个表的行数
    python--setUp()和tearDown()应用
    python--获取文件路径
    测试用例设计方法基础理论知识
    软件测试的基础理论
    Linux理论基础知识
    APP测试理论知识点
    Python30个基础题(三)
    Python30个基础题(二)
  • 原文地址:https://www.cnblogs.com/HBU-xuhaiyang/p/12520648.html
Copyright © 2011-2022 走看看