
- 外文名
- Character string
- 拼 音
- zi fu chuan
- 简 称
- 串(String)
- 释 义
- 编程语言中表示文本的数据类型
- 中文名
- 字符串
- 记 作
- s=“a1a2···an”(n>=0)
-
Oracle中字符串截取最全方法总结
2018-08-30 18:10:42substr 函数:截取字符串 语法:SUBSTR(string,start,[length]) string:表示源字符串,即要截取的字符串。 start:开始位置,从1开始查找。如果start是负数,则从string字符串末尾开始算起。 length:可选项...-
substr 函数:截取字符串
语法:SUBSTR(string,start, [length])
string:表示源字符串,即要截取的字符串。
start:开始位置,从1开始查找。如果start是负数,则从string字符串末尾开始算起。
length:可选项,表示截取字符串长度。
示例:
SELECT SUBSTR('Hello SQL!', 1) FROM dual --截取所有字符串,返回'Hello SQL!' SELECT SUBSTR('Hello SQL!', 2) FROM dual --从第2个字符开始,截取到末尾。返回'ello SQL!' SELECT SUBSTR('Hello SQL!', -4) FROM dual --从倒数第4个字符开始,截取到末尾。返回'SQL!' SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual --从第3个字符开始,截取6个字符。返回'llo SQ' SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual --从倒数第4个字符开始,截取3个字符。返回'SQL'
-
instr 函数:返回子字符串在源字符串中的位置
语法:INSTR(string,child_string,[start],[show_time])
string:表示源字符串。
child_string:子字符串,即要查找的字符串。
start:可选项,开始位置,默认从1开始。如果为负数,则从右向左检索。
show_time:可选项,表示子字符串第几次出现在源字符串当中,默认第1次,负数则报错。
示例:
--表示从源字符串'city_company_staff'中第1个字符开始查找子字符串'_'第1次出现的位置 SELECT INSTR('city_company_staff', '_') FROM dual --返回5 --表示从源字符串'city_company_staff'中第5个字符开始查找子字符串'_'第1次出现的位置 SELECT INSTR('city_company_staff', '_', 5) FROM dual --返回5 --表示从源字符串'city_company_staff'中第5个字符开始查找子字符串'_'第1次出现的位置 SELECT INSTR('city_company_staff', '_', 5, 1) FROM dual --返回5 --表示从源字符串'city_company_staff'中第3个字符开始查找子字符串'_'第2次出现的位置 SELECT INSTR('city_company_staff', '_', 3, 2) FROM dual --返回13 --start参数为-1,从右向左检索,查找'_'字符串在源字符串中第1次出现的位置 SELECT INSTR('city_company_staff', '_', -1, 1) FROM dual --返回13 --start参数为-6,从右向左检索,查找'_'字符串在源字符串中第2次出现的位置 SELECT INSTR('city_company_staff', '_', -6, 2) FROM dual --返回5
-
substr 函数结合 instr 函数截取字符串
现有需求:数据查询处理需要对code进行"拆分"
code命名规则类似:城市_所属公司_员工职位_员工姓名
其中,城市、公司、职位、姓民字符串长度不固定,由于字符串长度不固定,只使用substr函数无法实现需求,需配合instr函数定位到字符'_'的位置,然后使用substr函数进行截取。详细见下面例子。
表数据如下:
SOURCE_CODE BJ_BAIDU_CEO_LY SH_BOKE_MANAGER_LWX HRB_WM_CASHIER_OYZY 获取城市:
SELECT SUBSTR (SOURCE_CODE, 1, INSTR (SOURCE_CODE, '_', 1, 1) - 1) AS CITY FROM TABLE_CODE_TEST
结果:
解释:此处截取源字符串SOURCE_CODE,从第1个字符开始,由于代表城市的code长度不固定,我们无法确定截取几个字符,所以使用instr函数判断第一个'_'字符的位置,进而确定每个SOURCE_CODE截取几个字符串。
那为什么减1呢?
是因为INSTR (SOURCE_CODE, '_', 1, 1)获取的是源字符串中'_'字符第一次出现的位置,再减1就得出了CITY字符个数。
获取公司:
SELECT SUBSTR ( SOURCE_CODE, INSTR (SOURCE_CODE, '_', 1, 1) + 1, INSTR (SOURCE_CODE, '_', 1, 2) - INSTR (SOURCE_CODE, '_', 1, 1)-1 ) AS COMPANY FROM TABLE_CODE_TEST
结果:
解释:截取源字符串,从(第一个'_'出现位置+1)开始,截取个数为:第2个'_'出现位置减去第1个'_'出现位置,此时还多了一个下划线'_',再减去1即可得到代表公司字符串。
获取姓名:
SELECT SUBSTR (SOURCE_CODE, INSTR (SOURCE_CODE, '_', 1, 3) + 1) AS STF_NAME FROM TABLE_CODE_TEST
结果:
解释:截取源字符串,从('_'第3次出现位置+1)开始截取,截取到末尾。
-
-
Java在字符串中查找匹配的子字符串
2017-05-07 15:25:25Java在字符串中查找匹配的子字符串示例:
在源字符串“You may be out of my sight, but never out of my mind.”中查找“my”的个数。输出:匹配个数为2三种方法:
1.通过String的indexOf方法
2. 通过正则表达式
3. 通过String的split方法
其中第一种方法只能用于精确匹配,第二三种则可以模糊匹配(方法3的参数为正则表达式)。例如:若将child改为“.my.”,第一种方法失效。方法1:通过String的indexOf方法
public int indexOf(int ch, int fromIndex) :返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。如果不存在则返回 -1。
//方法1、通过String的indexOf(String str, int fromIndex)方法 private void matchStringByIndexOf( String parent,String child ) { int count = 0; int index = 0; while( ( index = parent.indexOf(child, index) ) != -1 ) { index = index+child.length(); count++; } System.out.println( "匹配个数为"+count ); //结果输出 }
方法2:通过正则表达式
类 Pattern :正则表达式的编译表示形式。
指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
因此,典型的调用顺序是
Pattern p = Pattern.compile(“a*b”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();- 类 Matcher:通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
matches 方法尝试将整个输入序列与该模式匹配。
lookingAt 尝试将输入序列从头开始与该模式匹配。
find 方法扫描输入序列以查找与该模式匹配的下一个子序列
//方法2、通过正则表达式 private void matchStringByRegularExpression( String parent,String child ) { int count = 0; Pattern p = Pattern.compile( child ); Matcher m = p.matcher(parent); while( m.find() ) { count++; System.out.println( "匹配项" + count+":" + m.group() ); //group方法返回由以前匹配操作所匹配的输入子序列。 } System.out.println( "匹配个数为"+count ); //结果输出 }
方法3:通过String的split方法
public String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
//方法3、通过split方法 private void matchStringBySplit( String parent,String child ) { String[] array = parent.split(child); System.out.println( "匹配个数为" + (array.length-1) ); }
完整代码:
import java.util.Arrays; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 在字符串中查找匹配的子字符串 * author:大能豆 QQ:1023507448 * case : * 源字符串:You may be out of my sight, but never out of my mind. * 要查找的子字符串:my * 输出:匹配个数为2 */ public class MatchString { //方法1、通过String的indexOf(String str, int fromIndex)方法 private void matchStringByIndexOf(String parent, String child) { int count = 0; int index = 0; while ((index = parent.indexOf(child, index)) != -1) { index = index + child.length(); count++; } System.out.println("匹配个数为" + count);//结果输出 } //方法2、通过正则表达式 private void matchStringByRegularExpression(String parent, String child) { int count = 0; Pattern p = Pattern.compile(child); Matcher m = p.matcher(parent); while (m.find()) { count++; System.out.println("匹配项" + count + ":" + m.group()); //group方法返回由以前匹配操作所匹配的输入子序列。 } System.out.println("匹配个数为" + count); //结果输出 } //方法3、通过split方法,但此方法需考虑子字符串是否是在末尾,若在末尾则不需要-1 private void matchStringBySplit(String parent, String child) { String[] array = parent.split(child); System.out.println("匹配个数为" + (array.length - 1)); } public static void main(String[] args) { MatchString ms = new MatchString(); String parent = "You may be out of my sight, but never out of my mind."; String child = "my"; System.out.println("------通过indexOf-------"); ms.matchStringByIndexOf(parent, child); //调用方法1 System.out.println("------通过正则表达式-------"); ms.matchStringByRegularExpression(parent, child); //调用方法2 System.out.println("------通过split方法-------"); ms.matchStringBySplit(parent, child); //调用方法3 String test = "abcdbdasda"; String[] as = test.split("a"); System.out.println(Arrays.toString(as)); } }
- 类 Matcher:通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作:
-
python从字符串中提取数字
2018-05-14 14:43:16## ^ 匹配字符串的开始。 ## $ 匹配字符串的结尾。 ## \b 匹配一个单词的边界。 ## \d 匹配任意数字。 ## \D 匹配任意非数字字符。 ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。 ## x* ...1、使用正则表达式,用法如下:
## 总结 ## ^ 匹配字符串的开始。 ## $ 匹配字符串的结尾。 ## \b 匹配一个单词的边界。 ## \d 匹配任意数字。 ## \D 匹配任意非数字字符。 ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符)。 ## x* 匹配0次或者多次 x 字符。 ## x+ 匹配1次或者多次 x 字符。 ## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次。 ## (a|b|c) 要么匹配 a,要么匹配 b,要么匹配 c。 ## (x) 一般情况下表示一个记忆组 (remembered group)。你可以利用 re.search 函数返回对象的 groups() 函数获取它的值。 ## 正则表达式中的点号通常意味着 “匹配任意单字符”
2、解题思路:
-
既然是提取数字,那么数字的形式一般是:整数,小数,整数加小数;
-
所以一般是形如:----.-----;
-
根据上述正则表达式的含义,可写出如下的表达式:"\d+.?\d*";
\d+
匹配1次或者多次数字,注意这里不要写成*
,因为即便是小数,小数点之前也得有一个数字;\.?
这个是匹配小数点的,可能有,也可能没有;\d*
这个是匹配小数点之后的数字的,所以是0个或者多个;
3、代码如下:
# -*- coding: cp936 -*- import re string="A1.45,b5,6.45,8.82" print re.findall(r"\d+\.?\d*",string) # ['1.45', '5', '6.45', '8.82']
-
-
python 去除字符串中指定字符
2018-08-06 14:37:52python中的strip()可以去除头尾指定字符 ss = '我的电话是18827038663,也是微信号,\n 请加入,谢谢\n\n\n' print(ss.strip('\n')) 结果: 我的电话是18827038663,也是微信号, 请加入,谢谢 可以看到只能...python中的strip()可以去除头尾指定字符
ss = '我的电话是18827038663,也是微信号,\n 请加入,谢谢\n\n\n' print(ss.strip('\n'))
结果:
我的电话是18827038663,也是微信号, 请加入,谢谢
可以看到只能删除头尾指定字符。
想要去除中间字符,可以使用replace()函数
ss = '我的电话是18827038663,也是微信号,\n 请加入,谢谢\n\n\n' print(ss.replace('\n', ''))
结果:
我的电话是18827038663,也是微信号, 请加入,谢谢
note:
1. strip(str)
基本用法:ss.strip(rmStr)
ss.strip()参数为空时,默认去除ss字符串中头尾\r, \t, \n, 空格等字符;参数为某个字符时,可以去掉头尾指定字符噢,例如:
输入:
ss = '我的电话是18827038663,也是微信号,请加入,谢谢啦啦嗯' print(ss.strip('嗯啦'))
运行结果:
我的电话是18827038663,也是微信号,请加入,谢谢
需要注意strip是按字符级别匹配的,只要头尾出现字符集中的字符,就会被strip掉,而不是整段字符匹配的。
ss.lstrip()删除ss字符串开头处的指定字符,ss.rstrip()删除ss结尾处的指定字符
2. replace(old, new[, max])
基本用法:ss.replace(old, new[, max])
old是原字符串中的字符,new是需要替换为的新字符串,max是最大匹配次数,匹配时从左到右最多max次。一般情况下不设置max的值,默认全部替换。
输入:
ss = 'old old string' ret = ss.replace('old', 'new', 1) print(ret)
输出:
new old string
-
Python判断字符串是否包含子字符串
2019-04-10 15:36:20Python如何判断一个字符串是否包含指定字符串?本文介绍Python判断一个字符串是否包含指定子串的4种方法。具有一定的借鉴价值。 第一种 使用in运算符 最简单的方法是通过python的 in 运算符 str = "Everyone has... -
常用的字符串截取方法
2019-03-27 17:33:241 取字符串的前i个字符 str=str.substring(0,i); str=str.remove(i,str.Length-i); 2 去掉字符串的前i个字符: str=str.remove(0,i); str=str.substring(i); 3 从右边开始取i个字符: str=str.substring(str.Length-... -
字符串和字符串数组
2019-03-04 13:42:04文章目录字符串字符串输出字符串常用方法计算字符串的长度字符串拼接字符串拷贝字符串比较字符串数组 字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,没有\0就不是... -
c语言比较两个字符串是否相等strcmp
2017-03-27 13:38:46C语言提供了几个标准库函数,可以比较两个字符串是否相同。以下是用strcmp()函数比较字符串的一个例子: #include #include int main(void) { char str_1[] = "abc"; char str_2[] = "abc"; char str_3[] = ... -
Python中的字符串切片(截取字符串)
2018-09-17 23:20:16字符串索引示意图 字符串切片也就是截取字符串,取子串 Python中字符串切片方法 字符串[开始索引:结束索引:步长] 切取字符串为开始索引到结束索引-1内的字符串 步长不指定时步长为1 字符串[开始索引:结束... -
Java中字符串indexof() 的使用方法
2016-07-05 15:48:34Java中字符串中子串的查找共有四种方法(indexof()) indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。 如果 startindex 是负数,则 startindex 被当作零。如果... -
Java截取字符串的常见方法
2019-02-27 19:54:44在项目中经常会遇到截取字符串的需求,这里重点介绍两种常见的截取字符串方法。 方法一:通过split() 将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常... -
C语言 16行代码实现字符串中指定字符串替换
2018-08-03 17:05:35支持: 1.等长字符串替换 2.长字符串替换为短字符串 3.短字符串替换为长字符串 4.中文替换 .../* 功 能:将str字符串中的oldstr字符串替换为newstr字符串 * 参 数:str:操作目标 oldstr:被替换者... -
C++字符串的拼接
2019-08-15 14:18:51字符串拼接是指将两个字符串连接在一起,形成一个更长的字符串 #include <iostream> int main(int argc,const char* argv[]) { std::string str1 = "Hello ;" std::string str2 = "World!"; //append... -
算法 - 输出一个字符串的全排列(C++)
2019-02-19 10:19:44分享一个大牛的人工智能教程。... * 对于一个字符串"abc"输出它的全排列,第一个字符应该分别为a,b,c;第二个字符,后面应该是除去已输出部分的剩余部分的全排列。 * * 即对于"abc", *... -
C语言字符串输入及输出的几种方式
2018-02-06 00:12:561.字符串数组+初始化 char s1[]="array"; //字符数组 char s2[6]="array"; //数组长度=字符串长度+1,因为字符串末尾会自动添‘\0‘ printf("%s,%c\n",s1,s2[2]); //array,r 2.字符串指针+初始化 char *sp=... -
C语言--字符串拷贝、字符串查找、字符串比较、字符串截取
2018-09-27 01:11:40在实际的应用当中,字符和字符串的操作是最常用的技能。总结下来,提升能力。 一、字符串拷贝 1、memcpy 2、strcpy 区别 二、字符串查找 三、字符串比较 四、字符串截取 1、一种简单而又机智的方法–... -
C语言基础——字符串指针(指向字符串的指针)
2018-07-25 09:57:15C语言中没有类似java,python等面向对象的编程语言中string那样的特定的字符串类型,通常是将字符串放在一个字符数组中。 遍历字符串代码: #include<stdio.h> #include<string.h> ... -
MySQL——字符串拆分(含分隔符的字符串截取)
2018-08-14 15:36:26有分隔符的字符串拆分 题目要求 数据库中 num字段值为: 实现的效果:需要将一行数据变成多行 实现的SQL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',... -
java判断字符串是否包含某个字符(串)
2018-07-28 18:38:18本篇地址 ... 判断一个字符串是否包含某个子串的n种方法 startsWith() contains方法 indexOf方法 ...这个方法有两个变体并测试如果一个字符串开头的指定索引指定的前缀或在默认情况下从字符串开... -
JS中ArrayBuffer转字符串,字符串转ArrayBuffer,字符与字节桥转换
2020-06-19 22:23:29//ArrayBuffer转字符串 function ab2str(u,f) { var b = new Blob([u]); var r = new FileReader(); r.readAsText(b, 'utf-8'); r.onload = function (){if(f)f.call(null,r.result)} } //字符串转字符串ArrayBu... -
iOS开发:字符串处理:截取字符串、匹配字符串、分割字符串
2019-03-07 12:23:44本篇要分享的是关于iOS开发中,字符串简单处理的方法,此部分过于基础,仅作加强记忆、记录使用。 一、截取字符串 进行截取字符串的操作,需求不同截取的方式不同,这里只介绍下面的截取方式。 1、截取下标某一位... -
判断一个字符串中是否包含另一个字符串
2017-12-25 10:00:21contains()判断一个字符串中是否包含某个字符串 starsWith()判断一个字符串中是否以某个字符串开始 endsWith()判断一个字符串中是否以某个字符串结尾 var s = "hello world!";s.starsWith("hello&... -
Java中的substring截取字符串方法
2018-11-02 10:19:491. 在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况,这个时候使用Java中提供的substring方法来截取就非常方便了 2. 其中比较经常使用到的方法有两个: ① public String substring(intbeginIndex) ... -
算法021:字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串...
2020-10-26 08:37:37字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文... -
python数字转字符串
2019-03-18 23:20:20还是这样简单直接一点,博客的可复阅性也会好一点。 这个点虽然简单,可每次要用到的时候都会想不起来,...str(x ) 将对象 x 转换为字符串 实例: >>> a=0 >>> b=str(a) >>> b '0' ... -
List转换成String字符串三种方式
2019-08-15 11:58:34List转换成String字符串思路分析: 1.List转化成String[],再通过String[]数组遍历拼接成String字符串; 2.List转化成String存到StringBuffer中,再通过StringButter中的append()方法拼接成String字符串; 注意:... -
js把字符串数组合成字符串/把字符串分割成字符数组
2017-01-05 16:49:02js把字符串数组合成字符串 js把字符串分割成字符数组 -
5.7字符串生成器
2020-02-02 14:16:53字符串生成器 若字符串大量增加例如 循环10000次 A+=“666”;则花费计算机资源极大,需要字符串生成器进行优化 步骤 创建字符串生成器 StringBuilder str= new StringBuilder(字符串); append( content ) 该方法... -
python字符串、字符串处理函数及字符串相关操作
2014-04-12 23:23:25http://blog.csdn.net/pipisorry/article/details/42085723字符串介绍python字符串表示Python除处理数字外还可以处理字符串,字符串用单撇号或双撇号包裹:>>> 'spam eggs' 'spam eggs' &... -
java判断字符串不为空和null的方法
2018-03-22 14:32:371、 空串”“是长度为0的字符串,它有自己的串长度(0)和内容(空),判断一个字符串为空的方法: if (str.length() == 0); 或 if (str.equals("")); 2、 null串表示目前没有任何对象与...
-
合同证明正版一元付费
-
PPT大神之路高清教程
-
opencv3.3.1要的文件.rar
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
华为1+X认证——网络系统建设与运维(初级)
-
RxJava3.0.0 操作符篇 - 组合操作符
-
css样式“list-style:none”是什么意思?
-
【考研初试】安徽建筑大学911物理化学考研真题库资料
-
选择排序算法-----简单选择排序算法
-
vscode连接远程服务器显示could not establish connect,解决步骤
-
视频转换器WonderFox便携注册版 UI界面好看.rar
-
函数内部,以元组的形式,接收传入的参数, 参数数量为[0-∞]
-
交换排序算法-----快速排序
-
【考研初试】安徽建筑大学703艺术设计理论考研真题库资料
-
项目经理成长之路
-
2010-2011年品牌微博营销执行方案.ppt
-
整合后的文件就叫可执行程序,windows后缀为.exe,Linux后缀为.out
-
公共信用信息分类与编码规范(试行).pdf
-
第二章 分支程序结构设计——作业-答案.html
-
NFS 网络文件系统