大家好,欢迎来到无非课堂,我是无非~
实际工作中,经常会遇到从字符串中截取部分字符的操作。根据具体需求的不同,可以用采用分列或函数等方式来实现,其实采用函数来实现是比较简单易学的方法。
无非老师与大家分享三个函数,用它可以完成98%以上的字符串截取需求,赶紧学起来吧!
例如,要对如下图所示的表格部分字符串进行截取以获取相关新数据,具体要用到的函数与实际应用方法如下。
一、LEFT函数
功能:
从一个文本字符串的第一个字符开始截取指定个数的字符。
格式:
LEFT( string, n )
说明:
string :必要参数。字符串表达式其中最左边的那些字符将被返回。如果 string 包含 Null,将返回 Null。
n :必要参数;为 Variant (Long)。数值表达式,指出将返回多少个字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。
应用:
如下图所示,要求提取身份号码的前两位。
操作步骤如下:
1、如下图所示,选定D2单元格,录入公式:
=LEFT(C2,2)
2、如下图所示,再次选定D2单元格,往下填充公式。
二、RIGHT函数
功能:
从一个文本字符串右端截取指定个数的字符。
格式:
Right(string, length)
说明:
string:必要参数。字符串表达式,从中最右边的字符将被返回。如果 string 包含 Null,将返回 Null。
length:必要参数;为 Variant (Long)。为数值表达式,指出想返回多少字符。如果为 0,返回零长度字符串 ("")。如果大于或等于 string 的字符数,则返回整个字符串。
应用:
如下图所示,要求提取身份号码的最后四位。
操作步骤如下:
1、如下图所示,选定D2单元格,录入公式:
=RIGHT(C2,4)
2、如下图所示,再次选定D2单元格,往下填充公式。
三、MID函数
功能:
从一个文本字符串中截取出指定个数的字符。
格式:
MID(text, start_num, num_chars)
说明:
text:表示指定的字符串,一般为引用的单元格。
start_num:表示指定位置。
num_chars:表示指定个数。
应用:
如下图所示,要求提取身份号码中的出生年月日,即从第7位开始连续的8位。
操作步骤如下:
1、如下图所示,选定D2单元格,录入公式:
=MID(C2,7,8)
2、如下图所示,再次选定D2单元格,往下填充公式。
这三个函数还可以与FIND、TEXT等函数结合,实现各种更为实用的功能。
你学会了吗?觉得有用请点赞、收藏,转发分享给自己备份一份,以便以后忘记时可以快速找到查看!
配套案例素材文件:SAE063_字符串截取三函数.xlsx,关注“无非课堂”后回复“1111”获取,有任何疑问或有更好的方法,请在下方评论区留言交流~~
想要快速系统化学习,请点击下方专栏卡片!
1、通过subString()方法来进行字符串截取,返回字符串中的子字符串,在java中有两种用法
//示例代码
public static void main(String[] args) {
String Str = "hello wrold";
System.out.print("返回值,从第4位截取到字符串末尾 :" );
System.out.println(Str.substring(4) ); //返回值,从第4位截取到字符串末尾 : o wrold
System.out.print("返回值,从第4位截取到第10位 :" );
System.out.println(Str.substring(4, 10) ); //返回值,从第4位截取到第10位 : o wrol 左闭右开
2.通过StringUtils提供的方法进行截取
//与第一种方法效果一样
StringUtils.substring("hello world", 4); // 返回值,从第4位截取到字符串末尾 : o wrold
StringUtils.substring("hello world", 4, 10); // 返回值,从第4位截取到第10位 : o wrol
//截取某个字符串之前的字符
StringUtils.substringBefore("hello world", "l"); //结果是:he 这里是以第一个“l”为标准
StringUtils.substringBeforeLast("hello world", "l"); //结果为:hello wor 这里以最后一个“l”为标准
//截取某个字符串之后的字符
StringUtils.substringAfter("hello world", "l"); //结果是:lo world 这里是以第一个“l”为标准
StringUtils.substringAfterLast("hello world", "l"); //结果为:d 这里以最后一个“l”为标准
//截取两个字符串之间的字符
StringUtils.substringBetween("hello world", "o"); //结果是: w 两个o之间的字符串
StringUtils.substringBetween("hello world", "l", "r"); //结果是: lo wo 第一个字符“l”与第一个字符“r”之间的字符串
StringUtils.substringsBetween("hello world", "l", "r"); //结果是: 数组 [lo wo] 第一个字符“l”与第一个字符“r”之间的字符串,以数组形式返回,需要用Arrays.toString()才能显示[lo wo],不然是地址值。
以上就是常用的java截取字符串方法。
python有其方便的字符串截取方法,针对字符串变量比较简单
day = '20220211'
print("整个字符串:"+day)
print("截取最后两位:"+day[-2:])
整个字符串:20220211
截取最后两位:11
那么处理dataframe内部元素,我一般用apply(lambda c:)的方法。比如我有一个df_ic,我希望增加一列【交割月份】,按照【合约代码】最后两位数字来重新定义。方法如下
日期 合约代码
2022-02-11CU2202
2022-02-11CU2203
2022-02-11CU2204
2022-02-11CU2205
先定义一个字典:
symbolSet = {"01":"1月合约","02":"2月合约","03":"3月合约","04":"4月合约","05":"5月合约","06":"6月合约","07":"7月合约","08":"8月合约","09":"9月合约","10":"10月合约","11":"11月合约","12":"12月合约"}
然后通过apply方法对df内部元素进行遍历
df_ic['期货合约'] = df_ic['合约代码']ly(lambda c: symbolSet[c[-2:]]) # 针对dataframe表内元素截取字符串,通过字典赋值
日期 合约代码 交割月份
2022-02-11CU2202 2月合约
2022-02-11CU2203 3月合约
2022-02-11CU2204 4月合约
2022-02-11CU2205 5月合约