牛牛下厨房,字符串切分问题

题目网址:
输入描述

每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。

输出描述

输出一行一个数字表示完成所有料理需要多少种不同的材料。

示例:

输入:
BUTTER FLOUR
HONEY FLOUR EGG
输出:
4

这道题有一个难点就是,不知道系统会输入几行,所以用Scanner.class.hasNext()方法进行判断,该方法返回boolean类型的值,当键盘手动输入结束时才会返回false.

import java.util.*;
/*
    BUTTER FLOUR
HONEY FLOUR EGG
*/
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String[] src = new String[10];
        Set<String> set = new HashSet<String>();
        while(in.hasNext()){
            String input = in.next();
            src = input.split(" ");
            for(String s : src){
                set.add(s);
            }
        }
        System.out.println(set.size());
    }
}

关于字符串切分(按照指定字符切分)split

String[] split(String regex)
Splits this string around matches of the given regular expression.

String[] split(String regex, int limit)
Splits this string around matches of the given regular expression.

根据给定的正则表达式,切分字符串.

	public static void main(String[] args){
        String str = "sing dance rap basketball";
        String[] result = str.split(" ");
        System.out.println(Arrays.toString(result));
    }

结果:

[sing, dance, rap, basketball]


	public static void main(String[] args){
        String str = "heheaddhahaha";
        String[] result = str.split("add");
        System.out.println(Arrays.toString(result));
    }

结果

[hehe, hahaha]


字符串部分拆分

	public static void main(String[] args){
        String str  = "sing dance rap basketball";
        String[] result = str.split("b",2);//2 为limit,根据b这个字符串将str切分成两部分
        System.out.println(Arrays.toString(result));
    }

[sing dance rap , asketball]

注意:当limit = 0,等于没有传入参数,全部都切了


另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义
例如拆分ip地址,需要加上转义

public static void main(String[] args){
        String str = "192.168.1.1" ;
        String[] arr = str.split("\\.");
        System.out.println(Arrays.toString(arr));
    }
		String str = "192*185*859*965" ;
        String[] arr = str.split("\\*");
        String str = "192+185+859+965" ;//   -号不用
        String[] arr = str.split("\\+");
        String str = "192$185$859$965" ;
        String[] arr = str.split("\\$");
        String str = "192|185|859|965" ;
        String[] arr = str.split("\\|");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值