用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 实现去除一个空格和多个空格就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
This replaces all repeated spaces, newlines and tabs with a single space, or with a supplied string. 用一个空格或一个给定字符替换所有重复空格,换行和制表符. Note: If you want to strip blocks of template text, use the strip func
问题内容: 我正在尝试用一个空格替换多个空格。使用时,我会收到关于它已过时的错误消息。 是否有相同的替代品。我需要用单个空格替换多个空格和多个空格。 问题答案: 使用和代替使用: 从正则表达式基本语法参考]: \ d,\ w和\ s 速记字符类,用于匹配数字,单词字符(字母,数字和下划线)和空格(空格,制表符和换行符)。可以在字符类的内部和外部使用。
本文向大家介绍sqlServer实现去除字符串空格,包括了sqlServer实现去除字符串空格的使用技巧和注意事项,需要的朋友参考一下 说起去除字符串首尾空格大家肯定第一个想到trim()函数,不过在sqlserver中是没有这个函数的,却而代之的是ltrim()和rtrim()两个函数。看到名字所有人都 知道做什么用的了,ltrim()去除字符串左边的空格,rtrim()去除字符串右边的空格,
trim(str, pos) 该方法可以去除空格,分别可以去除所有空格,两端空格,左边空格,右边空格,默认为去除两端空格 str <String> 字符串 pos <String> 去除那些位置的空格,可选为:both-默认值,去除两端空格,left-去除左边空格,right-去除右边空格,all-去除包括中间和两端的所有空格 console.log(this.$u.trim('abc b
问题内容: 我正在尝试使用普通的sql语句而不是pl sql将可能有一个或多个空格的列更新为一个空格 我可以通过更新表集column_name =’‘来做到这一点,其中column_name就像’%%’一样。但是,该列中可能有一些数据,例如abc def。我不想打扰该数据的模式,这意味着仅当该列填充空白并且不触摸具有任何数据的列时才这样做。 问题答案: 我建议使用正则表达式来执行此操作,既可以进行
本文向大家介绍C#实现去除Strings中空格的方法,包括了C#实现去除Strings中空格的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现去除Strings中空格的方法,分享给大家供大家参考。具体实现方法如下: 一般来说,你或许知道你能使用String.Trim方法去除字符串的头和尾的空格,不幸运的是. 这个Trim方法不能去除字符串中间的C#空格。 示例代码如下: 这个'