精华内容
下载资源
问答
  • 一种根据空格分割字符串的方法 import java.util.ArrayList; import java.util.List; public class split { public static void main(String[] args) { //空格从一个到七个 String a = "1 2 3 4 5 6 7 8"; ...

    一种根据空格分割字符串的方法

    import java.util.ArrayList;
    import java.util.List;
    
    public class split {
        public static void main(String[] args) {
            //空格从一个到七个
            String a = "1 2  3   4    5     6      7       8";
    
            List<String> list = new ArrayList<>();
            List<String> list1 = new ArrayList<>();
            String[] strings = a.split(" {2}");
            String[] strings1 = a.split("  {1}");
            for (int i = 0;i<strings.length;i++){
                String string = strings[i];
                if (string!=null){
                    list.add("\'"+string+"\'");
                }
            }
            for (int i = 0;i<strings1.length;i++){
                String string = strings1[i];
                if (string!=null){
                    list1.add("\'"+string+"\'");
                }
            }
            System.out.println(list);
            System.out.println(list1);
        }
    }
    

    split 的参数写出 m*空格 + {n}的格式,意思是以m*n个空格作为分割

    m*空格 + {n}的格式,意思是以m*n个空格作为分割

    但是多个空格之间是怎么分割的看不太懂,有了解的大佬请指教

    展开全文
  • 前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串。分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号、空格等等都...

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串。分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号、空格等等都可以作为字符串的分隔符。正好String类型提供了split方法用于切割字符串,只要字符串变量调用split方法,并把分隔符作为输入参数,该方法即可返回分割好的字符串数组。

    下面的split调用代码例子演示了如何按照逗号和空格切割字符串:

    // 通过逗号分割字符串

    private static void splitByComma() {

    String commaStr = "123,456,789";

    // 利用split方法指定按照逗号切割字符串

    String[] commaArray = commaStr.split(",");

    for (String item : commaArray) {

    System.out.println("comma item = "+item);

    }

    }

    // 通过空格分割字符串

    private static void splitBySpace() {

    String spaceStr = "123 456 789";

    // 利用split方法指定按照空格切割字符串

    String[] spaceArray = spaceStr.split(" ");

    for (String item : spaceArray) {

    System.out.println("space item = "+item);

    }

    }

    除了逗号和空格以外,点号和竖线也常常用来分隔字符串,但是对于点号和竖线,split方法的调用代码不会得到预期的结果。相反,split(".")无法得到分割后的字符串数组,也就是说结果的字符串数组为空;而split("|")分割得到的字符串数组,每个数组元素只有一个字符,其结果类似于toCharArray。究其原因,缘于split方法的输入参数理应是个正则串,并非普通的分隔字符。由于点号和竖线都是正则串的保留字符,因此无法直接在正则串中填写,必须进行转义处理方可。如同回车符和换行符在普通字符串中通过前缀的反斜杆转义那样(回车符对应\r,换行符对应\n),正则字符串通过在原字符前面添加两个反斜杆来转义,像点号字符在正则串中对应的转义符为“\\.”,而竖线在正则串中对应的转义符为“\\|”。经过转移处理之后,通过点号和竖线切割字符串的正确代码写法如下所示:

    // 通过点号分割字符串

    private static void splitByDot() {

    String dotStr = "123.456.789";

    // split(".")无法得到分割后的字符串数组

    //String[] dotArray = dotStr.split(".");

    // 点号是正则串的保留字符,需要进行转义(在点号前面加两个反斜杆)

    String[] dotArray = dotStr.split("\\.");

    for (String item : dotArray) {

    System.out.println("dot item = "+item);

    }

    }

    // 通过竖线分割字符串

    private static void splitByLine() {

    String lineStr = "123|456|789";

    // split("|")分割得到的字符串数组,每个数组元素只有一个字符,类似于toCharArray的结果

    //String[] lineArray = lineStr.split("|");

    // 竖线是正则串的保留字符,需要进行转义(在竖线前面加两个反斜杆)

    String[] lineArray = lineStr.split("\\|");

    for (String item : lineArray) {

    System.out.println("line item = "+item);

    }

    }

    竖线符号之所以被定为正则串的保留字符,是因为它在正则表达式里起到了“或”的判断作用,例如正则串“,| ”表示逗号和空格都是满足条件的分隔符;一个字符串如果同时包含一个逗号和一个空格,那么按照“,| ”切割的结果将是长度为3的字符串数组;也就是说,原始串被逗号分割一次后又被空格分割一次,这样一共分割两次最终得到了三个子串。下面的代码演示了使用正则串“,| ”切割字符串的效果:

    // 利用竖线同时指定多个串来分割字符串

    private static void splitByMixture() {

    String mixtureStr = "123,456 789";

    // 正则串里的竖线表示“或”,竖线左边和右边的字符都可以用来分割字符串

    String[] mixtureArray = mixtureStr.split(",| ");

    for (String item : mixtureArray) {

    System.out.println("mixture item = "+item);

    }

    }

    当然,正则串中的保留字符不仅包括点号和竖线,还包括好些常见的符号,比如加号(+)、星号(*)、横线(-),在正则串中均需进行转义。其中加号的正则转义符为“\\+”,星号的正则转义符为“\\*”,横线的正则转义符为“\\-”。这么估摸下,加减乘除的四则运算符号,只有除法的斜杆符(/)、取余数的百分号(%)无需转义处理。倘若有个字符串,要求以四则运算的五个符号进行切割,则需通过竖线把这几个转义后的字符加以连接,构成形如“\\+|\\*|\\-|/|%”的正则串。于是按照加减乘除符号切割字符串的代码就变为下面这样:

    // 通过算术的加减乘除符号来分割字符串

    private static void splitByArith() {

    String arithStr = "123+456*789-123/456%789";

    // 正则串里的加号、星号、横线都要转义,加减乘除符号之间通过竖线隔开

    String[] arithArray = arithStr.split("\\+|\\*|\\-|/|%");

    for (String item : arithArray) {

    System.out.println("arith item = "+item);

    }

    }

    分割用的正则串,不单单是一个个字符,还支持好几个字符组成的字符串。譬如“(1)”、“(2)”、“(3)”都可以作为分隔串,注意圆括号内部的数字可以是0到9,如此一来,从“(0)”到“(9)”的分隔串合集岂不是要写成以下这般:“(0)|(1)|(2)|(3)|(4)|(5)|(6)|(7)|(8)|(9)”?然而以上正则串的写法有两个错误:

    1、圆括号也是正则表达式的保留字符,所以不能直接在正则串中书写“(”和“)”,而必须写成转义形式“\\(”和”“\\)”。

    2、作为保留字符的圆括号,其作用类似数值计算之时的圆括号,都是通过圆括号把括号内外的运算区分开。而竖线符号“|”的或运算优先级不如圆括号,因此每逢复杂一点的或运算,应当把圆括号放在整个逻辑运算式子的外面。

    综合以上两点,修正之后的正则串应该改成下列形式:“\\((0|1|2|3|4|5|6|7|8|9)\\)”。可是该式子的竖线太多,意思仅仅是获取0到9之间的某个数字之一,针对这种情况,正则表达式引入了另外一种简化的写法,即通过方括号包裹0123456789,形如“\\([0123456789]\\)”,同样指代0到9之间的某个数字,从而省略了若干个竖线。进一步说,日常生活中0到9,常常写做“0-9”,于是对应更简单的正则串“\\([0-9]\\)”。

    其实0到9正好涵盖了所有的一位数字,对于一位数字而言,正则表达式提供了专门的表达式“\\d{1}”。式子前面的“\\d”代表某个数字,式子后面的“{1}”代表字符数量是1位。推而广之,“\\d{2}”表示两位数字,“\\d{3}”表示三位数字,等等。像这个正则例子只有一位数字,甚至尾巴的“{1}”都可以去掉,因为“\\d”默认就是一位数字。

    一口气介绍了许多种从0到9的正则表达串,接下来不妨逐一验证这些正则串是否有效,验证用的代码例子如下所示:

    // 通过圆括号及其内部数字来分割字符串

    private static void splitByBracket() {

    String bracketStr = "(1)123;(2)456;(3)789;";

    // 圆括号也是正则串的保留字符,0到9这九个数字使用竖线隔开

    //String[] bracketArray = bracketStr.split("\\((0|1|2|3|4|5|6|7|8|9)\\)");

    // 利用方括号聚集一群字符,表示这些字符之间是“或”的关系,故而可省略竖线

    //String[] bracketArray = bracketStr.split("\\([0123456789]\\)");

    // 连续的数字可使用横线连接首尾数字,例如“0-9”表示从0到9之间的所有数字

    //String[] bracketArray = bracketStr.split("\\([0-9]\\)");

    // 利用“\\d”即可表达0到9的数字,后面的{1}表示1位数字,依此类推{3}表示三位数字

    //String[] bracketArray = bracketStr.split("\\(\\d{1}\\)");

    // “\\d”默认就是1位数字,此时后面的{1}可直接略去

    String[] bracketArray = bracketStr.split("\\(\\d\\)");

    for (String item : bracketArray) {

    System.out.println("bracket item = "+item);

    }

    }

    上述的几种正则串,只能表达从“(0)”到“(9)”的分隔串,然而圆括号内部还可能是两位数字或者三位数字,比如“(10)”、“(12)”、“(001)”这样。对于数字位数不固定的情况,可以把“\\d”改为“\\d+”,末尾多出来的加号,表示前面的字符允许有一位,也允许有多位。此时正则串添加了加号的字符串切割代码见下:

    // 通过特殊符号的加号来分割字符串

    private static void splitWithPlus() {

    String bracketStr = "(1)123;(2)456;(13)789;";

    // 正则串里的加号表示可以有1到多个前面的字符

    String[] bracketArray = bracketStr.split("\\(\\d+\\)");

    for (String item : bracketArray) {

    System.out.println("plus item = "+item);

    }

    }

    上面说的位数不固定,毕竟至少还有一位。假设现在某个字符不但位数不确定,甚至还可能没有该字符(位数为0),采用写法“\\d+”就无法奏效了。要想满足位数可有可无的情况,需将末尾的加号换成星号,也就是改成“\\d*”,此时改用星号的字符串切割代码变为下面这般:

    // 通过特殊符号的星号来分割字符串

    private static void splitWithStar() {

    String bracketStr = "()123;(2)456;(13)789;";

    // 正则串里的星号表示可以有0到多个前面的字符

    String[] bracketArray = bracketStr.split("\\(\\d*\\)");

    for (String item : bracketArray) {

    System.out.println("star item = "+item);

    }

    }

    到目前位置,分隔符还仅限于标点和数字,如果引入英文字母作为分隔串,又该如何书写呢?注意英文字母区分大小写,因而使用“a-z”表示所有的小写字母,使用“A-Z”表示所有的大写字母。如果采纳“(a)”、“(B)”、“(c)”这种大小写混合的分隔串,就得通过正则串“\\([a-zA-Z]\\)”来表达,对应的字符串切割代码如下所示:

    // 通过大小写字母来分割字符串

    private static void splitWithLetter() {

    String bracketStr = "(a)123;(B)456;(c)789;";

    // 在正则串中表达小写字母和大写字母

    String[] bracketArray = bracketStr.split("\\([a-zA-Z]\\)");

    for (String item : bracketArray) {

    System.out.println("letter item = "+item);

    }

    }

    现在有个麻烦的业务场景,圆括号内部不但可能是数字和字母,还可能是其它标点符号,这下难不成把众多标点符号一个个罗列出来?要知道标点符号可没有“0-9”、“a-z”、“A-Z”的简单写法噢。不过这难不倒强大的正则表达式,因为点号作为正则的保留字符,它代表了除回车\r和换行\n以外的其它字符,所以使用“\\(.\\)”即可表达符合要求的任意字符了,当然是被圆括号包裹着的、除了回车\r和换行\n以外的任意字符。下面便是匹配前述场景的字符串切割代码例子:

    // 通过特殊符号的点号来分割字符串

    private static void splitWithDot() {

    String bracketStr = "(1)123;(B)456;(%)789;";

    // 正则串里的点号表示除了回车\r和换行\n以外的其它字符

    String[] bracketArray = bracketStr.split("\\(.\\)");

    for (String item : bracketArray) {

    System.out.println("dot item = "+item);

    }

    }

    展开全文
  • 最近在实现一个文稿导读功能时候用到字符串切割,简单说一下这个文稿导读,就是打开本地一个txt文件,展示在界面上,提供一个开始/暂停的button。开始,文本自动移动变红,速度自己可以控制,就是像歌词那样,一行一...

    最近在实现一个文稿导读功能时候用到字符串切割,简单说一下这个文稿导读,就是打开本地一个txt文件,展示在界面上,提供一个开始/暂停的button。开始,文本自动移动变红,速度自己可以控制,就是像歌词那样,一行一行的自动移动,变色的一行始终是展示的控件的中间。为什么用到字符串的切割呢?是因为不用分辨率和不同尺寸的屏幕显示字的个数是不一样的。在实现的时候我就想到根据展示控件(这里是自定义的TextView)的大小串来切割字符串的,以适应不同设备。在下一篇文章中实现这个“文稿导读”的功能,这一片文章先用来讲解切割字符串的方法;

    从一个文本中取出来的字符串,可能是纯中文文本,也有可能是中英混合的。

    纯中文文本的请情况下,使用一种比较容易理解的方式来实现:

    /**

    * 按照指定长度切割字符串

    * @param inputString需要切割的源字符串

    * @param length指定的长度

    * @return

    */

    public static List getDivLines(String inputString, int length) {

    List divList = new ArrayList<>();

    int remainder = (inputString.length()) % length;

    // 一共要分割成几段

    int number = (int) Math.floor((inputString.length()) / length);

    for (int index = 0; index < number; index++) {

    String childStr = inputString.substring(index * length, (index + 1) * length);

    System.out.println(childStr);

    divList.add(childStr);

    }

    if (remainder > 0) {

    String cStr = inputString.substring(number * length, inputString.length());

    divList.add(cStr);

    }

    return divList;

    }

    通用(中英混合或者纯中文,英文)的一种方式:

    /**

    * 处理输入的字符串,将字符串分割成以byteLength为宽度的多行字符串。

    * 根据需要,英文字符的空格长度为0.5,汉字的长度为2(GBK编码下,UTF-8下为3),数字英文字母宽度为1.05。

    * @param inputString 输入字符串

    * @param byteLength 以byteLength的长度进行分割(一行显示多宽)

    * @return 处理过的字符串

    */

    public static String getChangedString(String inputString, int byteLength) {

    String outputString = inputString;

    try {

    char[] chars = inputString.toCharArray();

    char[] workChars = new char[chars.length * 2];

    // i为工作数组的角标,length为工作过程中长度,stringLength为字符实际长度,j为输入字符角标

    int i = 0, stringLength = 0;

    float length = 0;

    for (int j = 0; j < chars.length - 1; i++, j++) {

    // 如果源字符串中有换行符,此处要将工作过程中计算的长度清零

    if (chars[j] == '\n') {

    length = 0;

    }

    try {

    workChars[i] = chars[j];

    //对汉字字符进行处理

    if (new Character(chars[j]).toString().getBytes("GBK").length == 2 /*&& chars[j] != '”' && chars[j] != '“'*/) {

    length++;

    if (length >= byteLength) {

    if (chars[j + 1] != '\n') {

    i++;

    stringLength++;

    workChars[i] = '\n';

    }

    length = 0;

    }

    } else if (new Character(chars[j]).toString().getBytes("GBK").length == 1) {

    //对空格何应为字符和数字进行处理。

    if (chars[j] == ' ' ) {

    length -= 0.5;

    }else {

    length += 0.05;

    }

    }

    } catch (UnsupportedEncodingException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    stringLength++;

    length++;

    //长度超过给定的长度,插入\n

    if (length >= byteLength) {

    if (chars[j + 1] != '\n') {

    i++;

    stringLength++;

    workChars[i] = '\n';

    }

    length = 0;

    }

    }

    outputString = new String(workChars).substring(0, stringLength)/* .trim() */;

    System.out.println(outputString);

    } catch (Exception e) {

    // TODO: handle exception

    Log.e("TextViewHelper", e.toString());

    }

    return outputString;

    }

    以上是我在自己项目中实际运用的,时间比较仓促,仅供自己来参考。读者在使用的时候可以根据自己的实际情况,选取适应自己的方式。

    在解决这个问题的过程中,尝试着其他的一些方法,虽然没有实现,但是在解决问题的过程中感觉到,只要你想到的对字符串的操作,API里面基本都有,因为他们考虑到的很全面,对字符串的操作一般在文档中就有对应的API。多上网找资料,找不到就去在API中查找,问题总会有解决的方法。

    展开全文
  • public class D { public static void main(String[] args) { String b = "Hello Java World"; System.out.println("原字符串:"+b); /*把字符串转化为数组形式,并用正则表达式进行分割*/ String [] c = b.split...
    public class D {
    public static void main(String[] args) {

    String b = "Hello Java World";
    System.out.println("原字符串:"+b);
    /*把字符串转化为数组形式,并用正则表达式进行分割*/
    String [] c = b.split("\\s+");
    for (String ss : c){
    System.out.println(ss);
    }
    }

    转载于:https://www.cnblogs.com/THEONLYLOVE/p/9115549.html

    展开全文
  • 下面是一个简单的例子,根据空格分割字符串str并将返回结果保存在数组strs中。 public class StringSplit { public static void main(String[] args) { // TODO Auto-generated method stub
  • 前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串。分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号、空格等等都...
  • 前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串。分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号、空格等等都...
  • 在C语言中,并没有像java中对字符串操作的封装好的函数,在C语言中,都需要自己根据C语言函数库来实现...//字符串的分割,根据子串分割字符串 //参数: //str被分割的字符串 //sub子串 //sub_before为str中sub所在位
  • 给定一个带n个空格的长字符串,我们要根据空格把他们分割开来,例如: String str=" this is a txt ! "; 首先我们要对收尾两端的空格进行处理,String类中的trim()函数,可以解决这个问题,会把字符串的首尾...
  • J2ME根据换行符分割字符串

    千次阅读 2010-04-25 16:12:00
    定义一个静态方法,无需实例化对象也可以调用该方法。...public class ParseString { //根据换行符分割字符串 public static Vector ParseStr(String str){ str = str.trim(); // 去除空格 if (str == "") { 
  • 5、字符串分割: split() public class StringSplit { public static void main(String[] args) { String message = "So say we all!";// 定义字符串 // split根据给定正则表达式的匹配拆分此字符串 ...
  • 例如这样的字符串 "我 是 一个 好 人啊" 代码 String s3 = "我 是 一个 好 人啊"; String [] spString = s3.split("\\s+"); for(String ss : spString){ System.out.println(ss...
  • 题目描述:编写函数,输入一个英文的句子,翻转句子中单词的...因为翻转的句子中单词不翻转,只是翻转句子,所以,根据空格分割,获取各个单词,再倒序重组单词。 java实现: import java.util.ArrayList; import ja...
  • /*  * 功能:以字符串的形式提供给你一段英文文章,请...再根据空格分割字符串,最后放入hashmap集合中,遍历hasnmap即可。  */ package com.zyy.stringcode; import java.util.HashMap; import java.util.
  • 我的需求是SQL文件中有成千的类似数据,我要将它们进行转换格式,如下图第一步:将字符段楼替换,使用word排版把数据拷贝到word中,使用特殊字符替换点击全部替换,替换之后如下图,这时候它是一串很长的字符串第二...
  • String[] split(String regex) // 根据给定正则表达式的匹配拆分此字符串。 //例1 public static void main(String[] args) { String s="张三 李四 钢铁侠";//给定字符串空格连接 String[] arr=s.split(" ")...
  • 我的需求是SQL文件中有成千的类似数据,我要将它们进行转换格式,如下图第一步:将字符段楼替换,使用word排版把数据拷贝到word中,使用特殊字符替换点击全部替换,替换之后如下图,这时候它是一串很长的字符串第二...
  • 我的需求是SQL文件中有成千的类似数据,我要...点击全部替换,替换之后如下图,这时候它是一串很长的字符串 第二步:编写Java替换程序 在代码中num是分割段,到第16个字符时候换行 public class Demo { public stat
  • Java的split()函数用多个不同符号分割

    千次阅读 2019-11-26 17:17:48
    public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。 然后就要明确正则表达式的含义了:\\s表示 空格,回车,换行等空白符, eg:用split(" ")和split("\\s")是一个效果,按一个空格分割...
  • 思路就是用一个字符串接受一行输入,然后用split函数根据空格字符串分割字符串数组,接下来再把数组中的每个字符串用parseInt转换成int即可 public class Solution { public static void main(String[] args) ...
  • 首先我们把头尾空格去掉,使用分割函数根据空格,把不是空格的内容分割出来。然后我们从分割数组的底部遍历,每遍历的一个元素,就添加到字符串缓冲区对象中,同时在后面加空格分隔,但是因为字符串最后是没有空格的...
  • 给定一个仅包含大小写字母和空格' '的字符串 s,返回其最后一个单词...通过String类中的 split() 方法,将字符串按照空格分割字符串数组,如果其长度为0,根据题意直接 return 0即可。如果长度不为0,直接通过 s...
  • Java 数据类型判断

    2020-12-04 14:56:49
    从键盘分别输入通过空格分割的整型(int)、浮点型(double)、字符型(String)、布尔型(boolean),根据读取的内容判断他们的类型并将他们解析为正确的对象,并都放到一个数组中。输出各个对象的类型 输入格式: 字符串 ...
  • Java——数据类型判断

    千次阅读 2018-10-23 16:18:50
    从键盘分别输入通过空格分割的整型(int)、浮点型(double)、字符型(String)、布尔型(boolean),根据读取的内容判断他们的类型并将他们解析为正确的对象,并都放到一个数组中。输出各个对象的类型 Input 字符串 ...
  • JAVA 正则表达式

    热门讨论 2010-01-15 11:16:37
    ◆以多条件分割字符串时 Pattern pattern = Pattern.compile("[, |]+"); String[] strs = pattern.split("Java Hello World Java,Hello,,World|Sun"); for (int i=0;i;i++) { System.out.println(strs[i]); } ...
  • trim()函数是去掉String字符串的首尾空格; split()函数是根据参数如",", "-", " "等, 分割String字符串, 返回一个String的数组(String[]), 可以通过索引指定元素. 如果未找到, 则返回整个String字符串, ...
  • 我们可能首先想到的是利用split()方法分割,然后利用StringBuffer逆序输出数组中字符串进行拼接!可是这样的空间复杂度比较高! 先将字符串转为char[],然后整体对char[]进行逆序反转 然后再根据空格位置,对每一个...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例099 去掉字符串中的所有空格 148 实例100 Double类型的比较 149 第9章 Java集合类框架 151 范例101 用动态数组保存学生姓名 152 实例102 用List集合传递学生信息 153 实例103 Map集合二级联动 155 实例104 不...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

java根据空格分割字符串

java 订阅