第2关:substring()方法与indexOf()方法的使用 - 姓名查找

任务描述

成为班长的小明最近好不忙,刚统计好了全班的花名册,班主任又交给了他一项任务。班主任的电脑不幸中了病毒,有一个文件变成了一堆乱码,但是班主任仔细查看了文件后发现,在这堆毫无意义的乱码中,还是有零散的班上同学的姓名穿插其中,现在班主任让小明将其位置找出来。

相关知识

substring()方法
在String类中有两个substring()方法,第一种如下:

String.substring(int start)
其中,start为要开始截取的位置的索引,方法将返回一个字符串,内容为原字符串从start位置开始到原字符串结束中间的数据。

例如:

String str = “hello world!”;
System.out.println(str.substring(1));
System.out.println(str.substring(3));
System.out.println(str.substring(6));

执行以上代码,结果如下:

ello world!
lo world!
world!

如果start大于字符串的长度,将会抛出越界异常。

第二种substring()方法:

String.substring(int start, int end)

其中,start为开始位置索引,end为结束为止索引,方法将返回一个字符串,内容为原字符串从start位置开始到end位置结束中间的数据。

例如:

String str = “hello world!”;
System.out.println(str.substring(1, 4));
System.out.println(str.substring(3, 5));
System.out.println(str.substring(0, 4));

执行以上代码,结果如下:

ell
lo
hell

indexOf()方法
indexOf()方法用于在String类的对象中查找子字符串,方法返回一个整数值,为子字符串的开始位置,若存在多个子字符串,返回数值最小的整数值;如果没有找到子字符串,返回-1。请看示例:

String str = “abcdefghijklmnabc”;
System.out.println(str1.indexOf(“c”)); //结果为2,为字符"c"第一次出现的位置
System.out.println(str1.indexOf(“x”)); //结果为-1,没有找到字符"x"

编程要求
本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

data变量为乱码文件的文本数据,由命令行读入;

name变量为需要查找的姓名,由命令行读入;

你将被要求输出若干行,每一行为查找到的姓名的位置。

评测说明
平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

以下是测试样例:

测试输入:
我嗨李四各位哦给李四复位后发我肥沃李四放我访问后李樊红伟四分嚄嚄嚄范围李四佛为红包蓝色配个好玩李四
李四

预期输出:
2
8
17
35
47

专注于你的目标,做积极的人、相信就在你身边。不要让其他事情分心了你的目标,这些都无助于实现你的目标。

开始你的任务吧,祝你成功。

代码如下:

package step2;

import java.util.Scanner;

public class NameSearch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        /********** Begin *********/
        String data=scanner.next();
        String name=scanner.next();
        int i=0;
        do{
            System.out.println(data.indexOf(name,i));
            i=data.indexOf(name,i)+name.length();
            //data.indexOf()返回的是出现该名字的开头字的位置
            //name.length是指名字的长度
        }while (data.indexOf(name,i)!=-1);
        /********** End *********/
    }
}

### 回答1: substring()方法用于从字符串中提取一部分字符。它有两个参数,分别是开始索引和结束索引。例如: ``` let str = "Hello World!"; console.log(str.substring(0, 5)); ``` 将输出 "Hello"。 indexOf()方法用于在字符串查找字符串的位置。它有一个参数,即要查找的子字符串。例如: ``` let str = "Hello World!"; console.log(str.indexOf("World")); ``` 将输出 6。 如果要在字符串查找姓名,可以使用两个方法结合。例如: ``` let str = "John Doe, Jane Smith, Bob Johnson"; let name = "Jane"; let start = str.indexOf(name); let end = start + name.length; console.log(str.substring(start, end)); ``` 将输出 "Jane"。 ### 回答2substring()方法indexOf()方法Java中常用的字符串操作方法之一,其中substring()方法可以截取字符串中指定位置的子串,而indexOf()方法可以返回字符串中指定子串的首次出现位置。 在进行姓名查找时,这两个方法都可以发挥作用。假设我们有一个字符串,包含若干个人的姓名,例如“张三 李四 王五 赵六”,现在我们要查找其中是否包含某个人的姓名,可以使用如下代码: String name = "张三"; int index = str.indexOf(name); if (index != -1) { String subStr = str.substring(index, index + name.length()); System.out.println("找到了:" + subStr); } else { System.out.println("未找到"); } 以上代码会先使用indexOf()方法查找name在字符串中的位置,如果找到了,就用substring()方法截取该子串并输出结果,否则输出“未找到”。 需要注意的是,我们使用的是indexOf()方法,其返回值为字符串中子串的位置,如果返回-1则表示未找到。而substring()方法中的参数是起始位置和截取长度,这里我们需要根据name的长度来计算终止位置。 除此之外,还可以通过substring()方法indexOf()方法实现对姓名中的姓氏和名字进行分割和提取。例如,假设我们有一个字符串“张三 李四 王五 赵六”,要将所有人的姓名中的姓氏和名字分开,可以使用如下代码: String[] names = str.split(" "); for (String name : names) { String surname = name.substring(0, 1); String givenName = name.substring(1); System.out.println("姓氏:" + surname); System.out.println("名字:" + givenName); } 以上代码会先使用split()方法字符串分割成多个姓名,然后使用substring()方法将每个姓名的姓氏和名字分开,并输出结果。需要注意的是,姓氏只需要截取第一个字符即可,因此起始位置为0,终止位置为1;而名字则要从第二个字符开始截取,因此起始位置为1。 综上所述,substring()方法indexOf()方法姓名查找中具有广泛的应用,可以帮助我们轻松地实现各种字符串操作。 ### 回答3: substring()方法indexOf()方法JavaScript中常用的字符串操作方法。在姓名查找中,这两个方法也可以被用来进行字符串的截取和定位。具体来说: 1. substring()方法 substring()方法可以接受两个参数,分别表示要截取的字符串的起始位置和结束位置。例如: var name = "张三丰"; var firstName = name.substring(0, 1); var lastName = name.substring(1); 这里通过substring()方法姓名分离成了姓和名。第一个参数0表示起始位置,第二个参数1表示结束位置(不包含该位置),因此firstName得到的是"张",而lastName得到的是"三丰"。 2. indexOf()方法 indexOf()方法可以接受一个参数,表示要查找字符串。它会返回第一个匹配到该字符串的位置。例如: var name = "张三丰"; var index = name.indexOf("张"); 这里查找"name"字符串中"张"所在的位置,返回的是0,表示"张"在第一个位置。 在姓名查找中,可以使用substring()indexOf()方法结合使用,来查找姓和名。例如: var name = "张三丰"; var lastName = name.substring(0, name.indexOf("张")); var firstName = name.substring(name.indexOf("张")); 这里先使用indexOf()方法查找"张"的位置,然后使用substring()方法字符串分离成姓和名。通过这种方法,可以灵活地处理不同格式的姓名字符串
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈陈不会敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值