java Split 实现去除一个空格和多个空格

用Split函数可以去除输入一个字符串中的空格,并且一般都是将它存储在一个字符串数组之中

例如:

import java.util.Scanner;
public class Main { 

 public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  String s=in.nextLine(); //如果我输入:0 1 2 3 4
  String[] str=s.split(" ");
  System.out.println(s);
  System.out.println(str[3]);

 }
} 

输出结果是:

0 1 2 3 4

3

可是会出现这种情况,如果我输入的是0 1 2 3 4,在2和3之间有3个的空格,那还会有用吗?

结果输出是:

0 1 2 (空格) 3 4

(空格)

也就是没有输出str[3],至少看上去是这样的,然后我分析得出结论,其实是这样的,

举个例子,我输入2(空)(空)(空)3,执行Split函数后得到的String str数组

是str[0]=2 ,str[1]=(空),str[2]=(空),str[3]=3

也就是说,Split函数在执行多空格判断时,会只将第一个空格忽略,其余空格都放入数组,直到遇到非空格数3,然后后面的情况重复,只有一个空格,情况是结果是理想的,多个空格,又是重复如此

解决方法:

import java.util.Scanner;
public class Main { 

 public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  String s=in.nextLine();
  String[] str=s.split("\\s+ "); //改动这里
  System.out.println(s);
  System.out.println(str[3]);

 }
} 

利用正则表达式,就可以实现我们理想的结果,

例如:输入2(空)(空)(空)3

结果:

str[0]=2

str[1]=3

补充知识:Java 键盘输入数字(空格隔开) 将数字存入数组

Scanner方法

核心是单行输入字符串,切割字符串中的空格,存入数组

Scanner s = new Scanner(System.in);
String inputStr = s.nextLine();
String[] strArray = inputStr.split(" ");
int[] num = new int[strArray.length];
for(int i = 0 ; i < num.length ; i++){
 num[i] = Integer.parseInt(strArray[i]);
}

Scanner输入的一个问题:在Scanner类中如果我们在任何7个nextXXX()方法之后调用nextLine()方法,这nextLine()方法不能够从控制台读取任何内容,并且,这游标不会进入控制台,它将跳过这一步。nextXXX()方法包括nextInt(),nextFloat(), nextByte(),nextShort(),nextDouble(),nextLong(),next()。此时应该使用BufferedReader。 ?

BufferedReader方法

首行输入数组大小,次行输入数组内容,依次用空格隔开。

它的优势在于消耗比scanner更少的内存和时间,如果在写算法时优先使用BufferedReader方法。

注意:使用完记得close,Scanner方法不需要close。

public static int[] ListInput() throws IOException {
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 int N = 0;
 String str = null;
 N= Integer.parseInt(br.readLine());
 str = br.readLine();
 br.close();
 int[] myList = new int[N];
 String[] strArray = str.split(" ");
 for (int i = 0; i < N; i++) {
 myList[i] = Integer.parseInt(strArray[i]);
 }
 return myList;
}
···

以上这篇java Split 实现去除一个空格和多个空格就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 浅谈String.split()遇到空字符串的几种情况

    Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组 split 方法 该方法的作用是:将一个字符串分割为子字符串,然后将结果作为字符串数组返回. stringObj.split([separator,[limit]]) stringObj 必选项.要被分解的 String 对象或文字,该对象不会被split方法修改. separator 可选项.字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符.如果忽略该选项,返回包含整个字符串的单一元素数

  • Java用split分割含一个或多个空格的字符串案例

    使用正则表达式: 1.String的split方法支持正则表达式: 2.正则表达式\s表示匹配任何空白字符,+表示匹配一次或多次. 比如待分割字符串为: String str = "the sky is blue"; 分割函数为: public static String[] flipping(String str){ String[] string = str.split("\\s+");//分割一个或多个空格 //String[] string = str.sp

  • Java split 分隔空值无法得到的解决方式

    应用场景 String s1="A,B," 将s1 以逗号分隔,转换成集合 正常的转换结果如下 [A,B] 逗号后的空不再进行分隔,若想逗号后的空即转换为三个元素的集合 List<String> list = Arrays.asList(s1.split(",",-1)); 只需要在跟个条件后,添加-1 即可 ,转换的结果如下 [A, B, ] 补充知识:Java Sting类关于split处理空串以及截取最大数 java的String类中有个split

  • java 中用split分割字符串,最后的空格等不被拆分的方法

    在使用java中的split按照"\t",拆分字符串的时候,发现如果最后的几个字段是空,只是用\t分割,是连着的\t的话,就不会被分割,如 "d\tc\te\t\t\t"最后的几个\t就不会被分割,应该是在拆分之前对字符串进行了处理. 导致的拆分字段个数错误.查了一下APi,需要在split中添加参数-1,String[] values = line.split("\t",-1); imit 参数控制应用模式的次数,从而影响结果数组的长度 如果限

  • Java:String.split()特殊字符处理操作

    一:需要特殊处理才能使用split()方法的字符 (1)需要使用"\\"或"[ ]"才能正确使用的字符集: ( ) [ ] { \ ? * + . ^ $ | (2)栗子: String str = "a0^33$\\53\6|!?3#6&5/*6~9 MY{.3+-/}*(]6[>=<-(8"; //这里以"("为例 String str_sub1 = str.split("\\(")

  • java Split 实现去除一个空格和多个空格

    用Split函数可以去除输入一个字符串中的空格,并且一般都是将它存储在一个字符串数组之中 例如: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String s=in.nextLine(); //如果我输入:0 1 2 3 4 String[] str=s.split(" "); Sys

  • Java实战之实现一个好用的MybatisPlus代码生成器

    一.先看下项目结构 CodeGenerator:生成器主类 resources下的mapper.java.vm:一个模板类,用以在生成dao层时按模板来生成代码 比如我们想把代码按如下目录来生成: 代码层 代码生成位置 Controller层 com.yinchd.web.controller Service层 com.yinchd.web.service Service实现类 com.yinchd.web.service implMapper层 com.yinchd.web.mapper xm

  • Java中正则表达式去除html标签

    Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正文的前50字作为摘要,那么这时需要去除所有html标签,然后在截取50字,所以就通过了Java正则表达式实现了如下方法,代码如下: 注:这是Java正则表达式去除html标签方法. private static final String regEx_script = "<script[^>

  • Java实现数组去除重复数据的方法详解

    本文实例讲述了Java实现数组去除重复数据的方法.分享给大家供大家参考,具体如下: 前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现,有好多方法可以实现,现在就总结一下,比较简单的几种. 一.用List集合实现 int[] str = {5, 6, 6, 6, 8, 8, 7,4}; List<Integer> list = new ArrayList<Integer>(); for (int i=0; i<s

  • java split()使用方法解析

    这篇文章主要介绍了java split()使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天写个程序用到java里面的split()函数时,发现可以有两个参数,之前用这个函数一直是用的一个参数,今天试了下两个参数的使用,记录一下区别. 下面是菜鸟里关于split()函数的定义 通过这个定义可以发现,第一个参数是split()函数对字符串分割的根据,第二个参数是分割的份数. 第二个参数有两种写法 一种是比较直观的,直接输入要分割的份

  • java中List去除重复数据的5种方式总结

    前言 List 是一个接口,它继承于Collection的接口.它代表着有序的队列.当我们讨论List的时候,一般都和Set作比较. List中元素可以重复,并且是有序的(这里的有序指的是按照放入的顺序进行存储.如按照顺序把1,2,3存入List,那么,从List中遍历出来的顺序也是1,2,3). Set中的元素不可以重复,并且是无序的(从set中遍历出来的数据和放入顺序没有关系). 以下介绍五种-不同的方法去除 Java 中ArrayList中的重复数据 1.使用LinkedHashSet删除

  • java课程设计做一个多人聊天室(socket+多线程)

    目录 课设要求 相关知识点 1.服务端能够看到所有在线用户 2.服务端能够强制用户下线 3.客户端能够看到所有在线用户 4.客户端要求能够向某个用户发送消息 5.运用JDBC实现持久化存储用户信息 6.使用JSONObject对象封装数据 7.使用Maven构建管理项目 类图 项目框架 核心代码 1.maven配置文件pom.xml 2.服务器端Server.java 4.客户端注册界面Register.java 5.客户端聊天界面Chat.java 6.用户实体User.java 7.JDBC

  • Vue js如何用split切分并去掉空值和item的空格

    目录 用split切分并去掉空值和item的空格 vue空值报错 用split切分并去掉空值和item的空格 let a = 'www,mail , test,' let m = a.split(",").map(el => el.trim()).filter(item => item.trim() != '') console.log(m) // ["www", "mail", "test"] vue空值报错 如

随机推荐