Java问题:从字符串中提取用空格隔开的数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java问题:从字符串中提取用空格隔开的数字相关的知识,希望对你有一定的参考价值。

如字符串 “16 5 12 136” 输出为:16512136

String s = "16 5 12 136";String s1[] = s.trim().split(" ");//先用trim()去掉s的前后的空格,再用空格分割s到s1中
for (int i = 0; i < s1.length; i++)
System.out.println(s1[i]);//输出s1
参考技术A 提示:你使用String类中的Split函数,我这里给你一个例子: public class SplitDemo
public static String[]ss=null;
public SplitDemo()

String s = "The rain in Spain falls mainly in the plain.";
// 在每个空格字符处进行分解。
Stringss = s.split(" ");

public static void main(String[] args)

SplitDemo demo=new SplitDemo();
for(int i=0;i<ss.length;i++)
System.out.println(ss[i]);


参考技术B public class Test
public static void main(String arg[])
String str="16 5 12 136";
String[] args=str.trim().split(" ");
for (int i = 0; i < args.length; i++)
System.out.println(args[i]);


参考技术C String s="16 5 12 136";String[] ss=s.split(" ");for (int i = 0; i < ss.length; i++) System.out.println(ss[i]);

Java提取字符串中的数字

在Java中,如果输入一串由其他非数字字符隔开的数字,但却想要将其中的数字提取出来,网上已经给出多种解决方案,以下对这些方法及其对应的情况进行简单的总结,并提出自己的解决方案:

1.多个由不确定字符隔开的单个数字

该方法只适用于分离字符串中的单个数字字符,因此得到的结果也是个位数的数字。
例如:

1 5、2,5。1    9 2

此时可以考虑将输入存入String变量,依次读取字符串中的每个字符,并判断是否为数字再将其转化为整型数据。而把单个char类型字符转化为整型的方法,网上已有非常常见的简单转化方法,即将目标数字字符与‘0‘字符相减,以下做出展示:

import java.util.ArrayList;
import java.util.Scanner;

public class NumberCollector {
    public static void main(String[] arge) {
        Scanner in = new Scanner(System.in);
        String charList = in.nextLine();
        ArrayList<Integer> numList = new ArrayList<>();

        //遍历字符串中每个字符,将数字字符转化为整型数字
        for (int i = 0; i < charList.length(); i++) {
            if (Character.isDigit(charList.charAt(i))) {
                //通过将目标数字字符与‘0‘字符ASCII码相减,结果即为该数字本身的整型数字
                numList.add(charList.charAt(i) - ‘0‘);
            }
        }

        for (int i = 0; i < numList.size(); i++) {
            System.out.println(numList.get(i));
        }
    }
}

2.多个由特定字符隔开的任意数字

该方法相比第一种方法,虽然能够筛选出非个位数的数字,但在操作前,需要明确分割数字的字符。
若输入的字符串中,数字与数字之间,都是被唯一确定的字符隔开,例如:

5 4 6 12 100 3
1,2,51,12,6

此时可以采用网上给出的一种普遍处理方法,使用split分割字符串再使用Integer中的ParseInt方法将其进行转换:

import java.util.ArrayList;
import java.util.Scanner;

public class NumberCollector {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] numStr = in.nextLine().split(" "); //此处以空格字符分割为例
        ArrayList<Integer> numList = new ArrayList<>();

        //遍历分割后的字符串数组并依次转型为整型
        for (int i = 0; i < numStr.length; i++) {
            numList.add(Integer.parseInt(numStr[i]));
        }

        for (int i = 0; i < numList.size(); i++) {
            System.out.println(numList.get(i));
        }
    }
}

3.由任意字符隔开的任意数字

由于在开发中,常会遇到奇怪刁钻的情况,在这里我提出一些个人的想法与应对方案,如题,若遇到此种情况,例如输入:

5   10,,,103xyz50 a.10

解决思路:若要提取其中的数字转化为整型数字,可以考虑遍历字符串中每个字符,若该字符为数字,则往预备区里存入该数字字符,当读到非数字字符时,即可认为预备区里已经有一个完整的数字字符串,此时再考虑将其转化为整型数字。
以下给出实现代码:

import java.util.ArrayList;
import java.util.Scanner;

public class NumberCollector {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String charList = in.nextLine();
        in.close();

        String integer = ""; //作为数字字符串的预备区
        ArrayList<Integer> numList = new ArrayList<>();

        for (int i = 0; i < charList.length(); i++) {
            //遍历字符串中每个字符时,若该字符为数字字符,则存入预备区
            if (Character.isDigit(charList.charAt(i))) {
                integer += charList.charAt(i);

                //避免字符串最后一位为数字而遗漏收集的情况
                if (i == charList.length() - 1) {
                    numList.add(Integer.parseInt(integer));
                }
            }else if (!integer.isEmpty()) { //读取到非数字字符,并且检查预备区是否为空
                numList.add(Integer.parseInt(integer));
                integer = "";
            }
        }

        //输出收集到的整型数字
        for (int each : numList) {
            System.out.println(each);
        }
    }
}

针对上面给出的输入样例,可得输出:

5
10
103
50
10

这种方法同时还可以适用于第一,第二种方法所针对的情况,但如果问题情况非常简单时,当然还是第一,第二种方法省时省力。


以上是自己根据平时总结的一些网络上以及个人的方法和技巧,若有疏漏或更好的建议,非常欢迎对此作出评论或提出意见,这样对我也会有很大的帮助!

以上是关于Java问题:从字符串中提取用空格隔开的数字的主要内容,如果未能解决你的问题,请参考以下文章

Java中怎么读入一行输入空格隔开的多个数据

编写一个程序 输入一系列单词 用逗号隔开,然后提取这些单词,并分行输出,删除空格

编写方法,打印1-100之间所有的偶数,每行显示10个数字,每个数字之间用空格或“,”隔开。java语言

Java中怎么读入一行输入空格隔开的多个数据

C语言,目的:输入一串数字,用空格隔开,然后赋值给数组

Java提取字符串中的数字