-
2021-03-05 13:02:58
例如:
将字符串拆分成一个列表,其中每个单词都是一个列表中的元素:txt = "welcome to the jungle"
x = txt.split()
print(x)
1、定义和用法
split()方法将字符串拆分为一个列表。
可以指定分隔符,默认分隔符是空格。
注意:指定maxsplit后,列表将包含指定的元素数量加一。
2、调用语法
string.split(separator, maxsplit)
3、参数说明参数描述
separator可选的。指定分割字符串时要使用的分隔符。
默认情况下,空格是分隔符
maxsplit可选的。指定要执行的分割数。默认值为-1,
即“所有出现次数”
4、使用示例
例如:
使用逗号,后跟一个空格 (, )作为分隔符:txt = "hello, my name is Peter, I am 26 years old"
x = txt.split(", ")
print(x)
例如:
使用#符号作为分隔符:txt = "apple#banana#cherry#orange"
x = txt.split("#")
print(x)
例如:
将字符串拆分为最多2个元素的列表:txt = "apple#banana#cherry#orange"
# 将maxsplit参数设置为1,将返回一个包含2个元素的列表
x = txt.split("#", 1)
print(x)
更多相关内容 -
JAVA中字符串split方法的探究
2019-07-04 20:43:39今日在使用split分割字符串时突然想到一种情况,如下: String str="aaaaaaaab"; String arr[]=str.split("aa"); 问,arr数组的长度是多少? 那如果str为”baaaaaaaa”呢 String str="baaaaaaaa"; 如果str=”...今天在使用split分割字符串时突然想到一种情况,如下:
String str="aaaaaaaab"; String arr[]=str.split("aa");
问,arr数组的长度是多少?
那如果str为”baaaaaaaa”呢String str="baaaaaaaa";
如果str=”aaaaaaaab”呢
String str="aaaaaaaab";
如果str=”baaaaaaaab”呢
String str="baaaaaaaab";
好,我们先在程序中验证一下:
public class Test { public static void main(String[] args) { String str="aaaaaaaa"; String [] arr=str.split("aa"); System.out.println("字符串aaaaaaaa分割的数组长度为:"+arr.length); str="baaaaaaaa"; arr=str.split("aa"); System.out.println("字符串baaaaaaaa分割的数组长度为:"+arr.length); str="aaaaaaaab"; arr=str.split("aa"); System.out.println("字符串aaaaaaaab分割的数组长度为:"+arr.length); str="baaaaaaaab"; arr=str.split("aa"); System.out.println("字符串baaaaaaaab分割的数组长度为:"+arr.length); } }
运行以上代码输出结果
看到结果的你是不是有点小小的惊讶,如果有的话那就继续往下看。
通过split方法查看源码可知又调用了split(regex, 0)方法并且传入一个0:public String[] split(String regex) { return split(regex, 0); }
继续查看源码
public String[] split(String regex, int limit) { /* fastpath if the regex is a (1)one-char String and this character is not one of the RegEx's meta characters ".$|()[{^?*+\\", or (2)two-char String and the first char is the backslash and the second is not the ascii digit or ascii letter. */ char ch = 0; if (((regex.value.length == 1 && ".$|()[{^?*+\\".indexOf(ch = regex.charAt(0)) == -1) || (regex.length() == 2 && regex.charAt(0) == '\\' && (((ch = regex.charAt(1))-'0')|('9'-ch)) < 0 && ((ch-'a')|('z'-ch)) < 0 && ((ch-'A')|('Z'-ch)) < 0)) && (ch < Character.MIN_HIGH_SURROGATE || ch > Character.MAX_LOW_SURROGATE)) { int off = 0; int next = 0; boolean limited = limit > 0; ArrayList<String> list = new ArrayList<>(); while ((next = indexOf(ch, off)) != -1) { if (!limited || list.size() < limit - 1) { list.add(substring(off, next)); off = next + 1; } else { // last one //assert (list.size() == limit - 1); list.add(substring(off, value.length)); off = value.length; break; } } // If no match was found, return this if (off == 0) return new String[]{this}; // Add remaining segment if (!limited || list.size() < limit) list.add(substring(off, value.length)); // Construct result int resultSize = list.size(); if (limit == 0) { while (resultSize > 0 && list.get(resultSize - 1).length() == 0) { resultSize--; } } String[] result = new String[resultSize]; return list.subList(0, resultSize).toArray(result); } return Pattern.compile(regex).split(this, limit); }
有其中关系可知最终会执行 Pattern.compile(regex).split(this, limit)这一段代码,基础往下扒代码:
public String[] split(CharSequence input, int limit) { int index = 0; boolean matchLimited = limit > 0; ArrayList<String> matchList = new ArrayList<>(); Matcher m = matcher(input); // Add segments before each match found while(m.find()) { if (!matchLimited || matchList.size() < limit - 1) { if (index == 0 && index == m.start() && m.start() == m.end()) { // no empty leading substring included for zero-width match // at the beginning of the input char sequence. continue; } String match = input.subSequence(index, m.start()).toString(); matchList.add(match); index = m.end(); } else if (matchList.size() == limit - 1) { // last one String match = input.subSequence(index, input.length()).toString(); matchList.add(match); index = m.end(); } } // If no match was found, return this if (index == 0) return new String[] {input.toString()}; // Add remaining segment if (!matchLimited || matchList.size() < limit) matchList.add(input.subSequence(index, input.length()).toString()); // Construct result int resultSize = matchList.size(); if (limit == 0) while (resultSize > 0 && matchList.get(resultSize-1).equals("")) resultSize--; String[] result = new String[resultSize]; return matchList.subList(0, resultSize).toArray(result); }
通过代码我们可以发现最终matchList集合中会有值,不过都是空值,然后在
while (resultSize > 0 && matchList.get(resultSize-1).equals("")) resultSize--;
这一段代码中,首先判断最后一个是不是空,如果没有值的话就减一位,依次类推,所以看到这大家对以上程序出现的结果是不是就不奇怪了。
所以我们可以大胆的总结一下,使用split方法分割字符串,如果最后几位是空的话,会将空的位置去掉。加入我的行列:
(嘿嘿嘿,点击这里关于我哦,分享小知识):https://www.jianshu.com/p/7d19f0df5b6b
-
Java字符串之split方法
2021-07-03 20:55:36正则表达式由普通字符以及特殊字符组成的文字模式; 正则表达式可以用来搜索、编辑和处理文本。 1.1 常用语法 1.1.1 字符范围 [xyz] : 表示可能是x,可能是y,也可能是z; [^xyz] : 表示表示x,y,z中的任意一个; [a...文章目录
1 String[] split(String regex)
将此字符串拆分为给定的regular expression(正则表达式)匹配
参数:regex–分割正则表达式
结果:将字符串按分隔符分为字符串数组
。
注意:- 如果字符串中的regex后面字符也是regex,后面每有一个regex,字符串数组中就会在对应的位置多一个空字符串。但如果空字符串在末尾,字符串数组就会将它舍弃。
public class test { public static void main(String[] args) { String str = "1,,2,3,4,,,,"; String[] s = str.split(","); for (String word : s) { System.out.println(word + "%"); } } }
从结果中我们可以看出第二个逗号作为空字符串在字符串数组中存在,而字符串str末尾的逗号都被舍弃。- 当regex为①
(
②[
③{
④/
⑤^
⑥-
⑦$
⑧¦
⑨}
⑩]
⑪)
⑫?
⑬*
⑭+
⑮.
等这些特殊字符时,需要在前面加上\\
进行转义。
public class test { public static void main(String[] args) { String str = "1..2.3.4....5.6..."; String[] s = str.split("\\."); for (String word : s) { System.out.println(word + "%"); } } }
从上述结果可以看出.
需要转义字符形成\\.
才能对字符串分割。而且输出结果也验证了第一点regex后面的每个regex对应字符串数组中的空字符串,末尾的部分舍弃。2 String[] split(String regex, int limit)
将此字符串拆分为给定的regular expression(正则表达式)匹配
参数:- regex–分割正则表达式;
- limit–影响字符串数组的长度
- limit > 0 : regex的匹配模式将最多被应用limit - 1次,数组的长度不会超过limit,数组的最后一项有可能包含所有超出最后匹配的regex。
- limit = 0 : 与不带参数limit的split方法相同,结尾的空字符串被舍弃。
- limit < 0 : 匹配模式将尽可能多的使用,而且字符串数组可以是任意长度。
结果:将字符串按分隔符分为字符串数组
。
String str = "3..2.1.1....1.6...";
- 当regex = "
1
"时,
public class test { public static void main(String[] args) { String str = "3**2*1*1****1*6***"; int[] limitArr = {0, 2, 5, -2}; for (int limit : limitArr) { String[] s = str.split("1", limit); System.out.println("limit = " + limit + " : " + Arrays.toString(s)); } } }
- 当regex = "
\\*
"时,
public class test { public static void main(String[] args) { String str = "3**2*1*1****1*6***"; int[] limitArr = {0, 2, 5, -2}; for (int limit : limitArr) { String[] s = str.split("\\*", limit); System.out.println("limit = " + limit + " : " + Arrays.toString(s)); } } }
3 split()的应用
3.1 leetcode–1078. Bigram 分词
1078. Bigram 分词
这道题目很简单,直接上代码:public String[] findOcurrences(String text, String first, String second) { List<String> res = new ArrayList<>(); String[] words = text.split(" "); for (int i = 0; i < words.length - 2; i++) { if (words[i].equals(first) && words[i + 1].equals(second)) res.add(words[i + 2]); } return res.toArray(new String[0]); }
注意:
- split方法字符串进行分割;
- toArray(new String[0])将List转换为数组;
-
Python字符串--split方法
2021-07-24 22:19:45Python字符串–split方法 描述: 这是字符串的分隔方法,主要有两个参数。第一个参数是“指定分隔符对字符串进行分隔”,第二个参数是“指定分隔的段数”,在这里需要注意的是:分隔的段数是设置的参数+1. 示例一,...Python字符串–split方法
描述: 这是字符串的分隔方法,主要有两个参数。第一个参数是“指定分隔符对字符串进行分隔”,第二个参数是“指定分隔的段数”,在这里需要注意的是:分隔的段数是设置的参数+1.
示例一,分隔符默认为所有的空字符,包括空格符,换行符,制表符等
str1="i need to leave,i'd like to do some anything important" print(str1.split()) str1="i\nneed\nto\nleave,i'd\nlike\nto\ndo\nsome\nanything\nimportant" print(str1.split()) str1="i\tneed\tto\tleave,i'd\tlike\tto\tdo\tsome\tanything\timportant" print(str1.split()) print(type(str1.split()))
运行结果如下:
['i', 'need', 'to', "leave,i'd", 'like', 'to', 'do', 'some', 'anything', 'important'] ['i', 'need', 'to', "leave,i'd", 'like', 'to', 'do', 'some', 'anything', 'important'] ['i', 'need', 'to', "leave,i'd", 'like', 'to', 'do', 'some', 'anything', 'important'] <class 'list'>
在这里需要注意的是返回值是一个字符串列表!
示例二,指定分隔符
str1="i need to leave,i'd like to do some anything important" print(str1.split("i",1)) print(str1.split("need",1)) print(str1.split("i need to leave")) str2="i i i i i i" print(str2.split("i"))
运行结果如下:
['', " need to leave,i'd like to do some anything important"] ['i ', " to leave,i'd like to do some anything important"] ['', ",i'd like to do some anything important"] ['', ' ', ' ', ' ', ' ', ' ', '']
1.在这里需要注意的是,第二个参数可以不设,如果不设置参数的话,就如第四个例子一样,有多少个字符就分+1段。
2.第一个参数可以是一个句子或者一段话。文 | 戴眼镜的it小孩纸
-
Python split()方法详解:分割字符串
2022-03-22 12:07:35Python split()方法详解:分割字符串 Python 中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。 注意,这里所说的方法,指的是... -
Oracle字符串分割Split
2021-05-07 00:53:13Oracle字符串分割Split一、创建数组类型Sql代码CREATE OR REPLACE TYPE T_RET_TABLE IS TABLE OF VARCHAR2(512)二、创建字符串分割函数Sql代码CREATE OR REPLACE FUNCTION F_SPLIT_STRING(AS_STR VARCHAR2,AS_SPLIT ... -
java字符串分割方法.split()的详细用法
2021-02-03 13:14:15方法总结 (1)按指定普通字符分割: java代码如下: String string="123@456@789"; String array[]=string.split("@"); //以 @ 分割 for(String s:array) System.out.println(s); 运行结果... -
【JavaEE进阶系列 | 从小白到工程师】Java中String的split切割字符串方法详解
2022-04-22 12:24:39目录一、public String[] split(String regex)二、public String[] split(String regex, int limit)三、扩展 ...解决方法:使用转义字符 '\\' 就可以解决   -
分割字符串split函数的正确用法(切片)
2021-11-23 23:29:52分割字符串split函数的正确用法(切片) split函数是将字符串分割为列表 函数原型: str.split(sep,maxsplit) 参数说明: str:表示要进行分割的字符串 sep:用于指定分隔符,可以包含多个字符,默认为None,即所有空... -
字符串使用split()方法截取时的空字符串问题
2021-01-03 12:09:48一、用例子来说明 1、单个分隔符占据第1个位置 @Test public void test() { String str = "_1"; String[] s = str....1上面的空行中是一个空字符串,不是我打错了 2、多个分隔符连续占据最前面的多个位置 @Test pu -
mysql字符串拆分实现split功能
2021-01-28 10:57:58转自:https://blog.csdn.net/pjymyself/article/details/81668157有分隔符的字符串拆分【0】需求数据库中 num字段值为: 实现的效果:需要将一行数据变成多行实现的SQLSELECTSUBSTRING_INDEX(SUBSTRING_INDEX('7654... -
Java中字符串split() 的使用方法.没你想的那么简单
2019-01-25 15:02:09先看下面的方法,事先预测一下,经过split方法,按逗号进行分割为数组之后,生成的数组的长度是多少,目测很多人都觉得是8,但是结果却出乎意料。是5而不是8. private static void testSplit() { String ss = ... -
用split方法分割字符串返回字符串列表对象
2020-02-21 18:40:05python内置提供了非常强大的字符串分割方法split,可以根据自定义的分割字符来切分给定的字符串(s),生成一个字符串列表(ssl),把分割之后的子字符串前后排列存放到列表中。我们使用以下代码可以对这个功能进行... -
mysql实现字符串分割SPLIT函数的四种方法
2021-02-06 19:30:56本文为大家介绍四个自定义的split函数,实现像处理数组一样去处理mysql中的字符串,有需要的朋友可以参考下。一、用临时表作为数组复制代码 代码如下:create function f_split(@c varchar(2000),@spli... -
字符串的split方法(),把字符串分割为数组
2021-10-03 10:48:50// 作用:使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置(从哪开始分割) // 返回值:分割形成的数组 例子: var str='this is a string'; // 以空格分隔 var ... -
Python按照指定的分隔符拆分字符串split()函数
2022-02-19 22:18:26Python按照指定的分隔符拆分字符串 split()函数 ● 选择题 以下程序运行的结果为: string="a.b.c.d.e.f" u1,u2,u3=string.split('.',2) print(u1,u3) 选项: A a c.d.e.f B ab C a.b c.d.e.f D a.be.f... -
Java实现split字符串分割方法
2021-01-20 17:16:35实现方法 split, 能够指定分割符将字符串拆分成字符串数组 思路如下: 统计字符串中的目标分割符的个数。 创建字符串数组并将其初始化为 “”,不初始化的话字符串数组中就会是null。 依次截取字符串中分隔符符之前... -
java字符串分割split你用对了吗
2022-04-28 23:48:36split() 方法根据匹配给定的正则表达式来拆分字符串。 注意:.、$、|和*等转义字符,必须得加\\。 注意:多个分隔符,可以用|作为连字符。 语法 public String[] split(String regex, int limit) 参数 ... -
C#中利用split分割字符串的几种方法
2021-07-21 14:46:57第一种方法: 代码如下: string s=abcdeabcdeabcde; string[] sArray=s.Split(c) ;...foreach(string i in sArray) ...使用另一种构造方法对多个字符进行分割: 代码如下: string s=abcdeabcdeabcde string -
MySql字符串拆分实现split功能(字段分割转列、转行)
2022-04-07 23:26:45字符串转多行 需求描述 实现的sql 案例演示 字符串拆分: SUBSTRING_INDEX(str, delim, count) 替换函数:replace( str, from_str, to_str) 获取字符串长度:LENGTH( str ) 实现的原理解析 实现... -
SQL字符串Split
2018-05-25 09:45:14SQL字符串Split 直接看代码: GO /****** Object: UserDefinedFunction [dbo].[StringSplit] Script Date: 2018/5/25 9:38:32 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo... -
C++中string如何实现字符串分割函数split()——4种方法
2022-01-31 15:01:57C++分割字符串 四种方法 -
字符串的split用法
2018-11-12 14:26:45Python中没有字符类型的说法,只有字符串,这里所说的字符就是只包含一个字符的字符串!!! split返回的是一个列表。 首先列出一种常用的情况,不带参数,默认是空白字符。如下: 结果为: 1.按某一个... -
Js拆分字符串split多出一个空字符
2019-11-28 18:43:201、拆分空字符串 出现了不期待的空字符 let str1 = ""; console.log(str1.split("|")); // [ '' ] console.log(str1.split(/|/)); // [] console.log(str1.split(/\|/)); // [ '' ] 2、拆分非字符串 let str2 =... -
java的split方法分割字符串(分隔符如* | . ^ )及注意点
2022-03-20 22:30:37^ 等符号在正则表达式中属于一种有特殊含义的字符,如果使用此种字符作为分隔符,必须使用转义符即\加以转义。 String add1="南京*建邺区"; String[] splitAdd1=add1.split("\\*"); System.out.println(splitAdd1[0... -
Python中使用split()截取字符串的方法
2021-05-27 04:35:01截取字符串中的地址,其它字符类似 <a href="https://www.meishij.net/zuofa/baiqieji_33.html" class="list_s2_item_img" style="background:url... -
C 实现字符串按多个字符采用Split方法分割
2018-11-17 21:18:01C 实现字符串按多个字符采用Split方法分割 -
C++中string如何实现字符串分割函数split()
2020-12-17 15:25:32我们如何将以上字符串按照某种分隔符(,-,+),将其分割成四个子串,其值分别为 “This” “is” “a” “test” 。 一、使用stringstream流 这里我们只需要用到 istringstream(字符串输入流) 构造字符串流,然后... -
js split 正则分割字符串
2021-07-23 11:10:55正则表达式 分割字符串 str.split(/[,-\s.]/) /[中间加多个分割符]/ \s 为空格转义 "Hello World,I-am code".split(/[,-\s.]/) // ["Hello", "World", "I", "am", "code"] "Earth-is-our home".split(/[,-\s.]/) // ... -
使用 split()处理字符串出现空字符串?
2019-12-29 14:10:24返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 参数 maxsplit:控制拆分次数 如果给出了 maxsplit,则最多进行 maxsplit 次拆分(因此,列表最多会有 maxsplit+1 个元素)。 如果 maxsplit 未指定...