字符串函数

正则表达式re模块小结

随声附和 提交于 2020-03-26 07:42:19
re模块的常用方法 1、compile(pattern[,flags]) 创建模式对象,一般配合其他方法使用。例如: import re #导入re模块 text = 'All that doth flow we cannot liquid name' #测试用的字符串 pattern = re.compile(r'\bd\w+\b') #编译正则表达式对象,查找以d开头的单词 print(pattern.findall(text)) #使用正则表达式对象的findall()方法 结果是: 2、search(pattern,string[,flags]) && match(pattern,string[,flags]) search()方法是在整个字符串中寻找模式,返回匹配的对象或者None。用于在整个字符串或指定范围中进行搜索。 match()方法是从字符串的开始处匹配模式,返回匹配的对象或者None。用于在字符串开头或指定位置进行搜索,模式必须出现在字符串开头或指定位置。例如: import re #导入re模块 text = 'All that doth flow we cannot liquid name' #测试用的字符串 pattern = re.compile(r'\b[a-zA-Z]{4}\b') #查找4个字母长的单词 print(pattern.match

字符串移位包含的问题

若如初见. 提交于 2020-03-26 06:40:42
问题: 给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。 解法一:从题目中可以看出,我们可以使用最直接的方法对S1进行循环移动,再进行字符串包含的判断,从而遍历其所有的可能性。字符串循环移动,时间复杂度为O(n),字符串包含判断,采用普通的方法,时间复杂度为O(n*m), 总体复杂度为O(n*n*m) 。字符串包含判断,若采用KMP算法,时间复杂度为O(n),这样总体的复杂度为O(n*n)。若字符串的长度n较大,显然效率比较低。其中n为S1的长度,m为S2的长度。 #include<iostream> using namespace std; /* strstr函数说明 包含文件:string.h 函数名: strstr 函数原型:extern char *strstr(char *str1, char *str2); 功能:从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。 返回值:返回该位置的指针,如找不到,返回空指针。 */ int rotate_conbine(char *src,char *dec) { int len

js中去除两端逗号

扶醉桌前 提交于 2020-03-26 02:49:39
1.js replace(a,b)之替换字符串中所有指定字符的方法 var str = 'abcadeacf'; var str1 = str.replace('a', 'o'); alert(str1); // 打印结果: obcadeacf var str2 = str.replace(/a/g, 'o'); alert(str2); //打印结果: obcodeocf, 注意: 此处replace的第一个参数为正则表达式,/g是全文匹配标识。 2. JS四种方法去除字符串最后的逗号 <script> window.onload=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一个object对象 var str = ''//定义一个空字符用来接收对象里的key或者value for(var item in obj) {//遍历item变量里的对象的属性和元素, str += obj[item] + ","//将obj对象的值遍历出来,并且追加到str字符中。 //str += item + ","//将obj对象的属性遍历出来,并且追加到str字符中。 } //第一种方法、将字符串中最后一个元素","逗号去掉, //str = str.substring(0, str.lastIndexOf('

百度:替换和清除空格

旧时模样 提交于 2020-03-25 19:57:54
一、替换字符 题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。 将长度为1的空格替换为长度为3的“%20”,字符差的产度变长。如果允许我们开辟一个新的数组(用Java的StringBuilder这样的可变字符串,String是不可变字符串)来存放替换空格后的字符串,那么这道题目就非常简单。设置两个指针分别指向新旧字符串首元素,遍历原字符串,如果碰到空格就在新字符串上填入“%20”,否则就复制元字符串上的内容。但是如果面试官要求在原先的字符串上操作,并且保证原字符串有足够长的空间来存放替换后的字符串,那么我们就得另想方法。 如果从前往后替换字符串,那么保存在空格后面的字符串肯定会被覆盖,那么我们就考虑从后往前进行替换。 首先遍历原字符串,找出字符串的长度以及其中的空格数量, 根据原字符串的长度和空格的数量我们可以求出最后新字符串的长度。 设置两个指针originalIndex和newIndex分别指向原字符串和新字符串的末尾位置。 如果originalIndex指向内容不为空格,那么将内容赋值给newIndex指向的位置,如果originalIndex指向为空格,那么从newIndex开始赋值“02%” 直到originalIndex=

【剑指Offer】2、替换空格

独自空忆成欢 提交于 2020-03-25 19:40:22
   题目描述:   请实现一个函数,将一个字符串中的 每个空格替换成“%20” 。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。    解题思路:   对于这个题目,我们首先想到原来的一个空格替换为三个字符,字符串长度会增加,因此,存在以下两种不同的情况:(1)允许创建新的字符串来完成替换。(2)不允许创建新的字符串,在原地完成替换。   第一种情况比较简单。对于第二种情况,有以下两种解法: 时间复杂度为O(n^2)的解法 。   从头到尾遍历字符串,当遇到空格时,后面所有的字符都后移2个。 时间复杂度为O(n)的解法。   可以先遍历一次字符串,这样可以统计出字符串中空格的总数,由此计算出替换之后字符串的长度, 每替换一个空格,长度增加2 ,即替换之后的字符串长度为原来的长度+2*空格数目。接下来从 字符串的尾部开始复制和替换 ,用两个指针P1和P2 分别指向原始字符串和新字符串的末尾 ,然后向前移动P1,若指向的不是空格,则将其复制到P2位置,P2向前一步;若P1指向的是空格,则P1向前一步,P2之前插入%20,P2向前三步。这样,便可以完成替换,时间复杂度为O(n)。    举例: ![](https://img2018.cnblogs.com/blog/1608161/201904/1608161

剑指offer 替换空格

让人想犯罪 __ 提交于 2020-03-25 19:39:41
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路 从头到尾扫描字符串,每次碰到空格字符后,将之后的字符向后移动两个位置,然后再把%20填入进去。时间复杂度是 n^2,复杂度太高。 遍历一次字符串,统计空格的总数,计算出替换后字符串总长度。 从字符串后面开始复制和替换,首先准备两个指针,p1,p2,p1指向原始字符串末尾,p2指向替换后字符串末尾,p1指向的字符不为空,复制到p2所在的位置,之后两者向前移动一个位置。 为空时,p2插入字符串%20,向前移动三个位置,p1向前移动一个位置,直到p1p2指向同一个位置或者p1遍历了所有的字符。 代码 class Solution { public: void replaceSpace(char *str,int length) { int i, pastlength = 0, afterlength, k, spacelength = 0; i = 0; while(str[i] != '\0') { pastlength++;//替换前长度 if(str[i] == ' ') spacelength++; i++; } afterlength = pastlength + spacelength * 2; /

剑指offer-question5-替换空格

半腔热情 提交于 2020-03-25 19:32:04
题目:   请实现一个函数,把字符串中的每个空格替换成“%20”。例如,输入“we are happy.”则输出“we%20are%20happy.”。 常规方法: 把字符串转为字符数组,从头往后遍历数组,遇到空格,则把空格后面的所有元素往后移动两个位置直到遍历到字符串的尾部 时间复杂度o(n 2 ) 1 package question5; 2 3 import java.util.Arrays; 4 5 public class SolutionRegular { 6 7 public static void main(String[] args) { 8 String str = "we are happy h h"; 9 char[] string = str.toCharArray(); 10 char[] array = Arrays.copyOf(string, 25); 11 //array = str.toCharArray(); 12 13 int n = str.length(); //n用于储存字符串的长度 14 int m = n; //m用于储存每次替换一个空格后的字符串的长度 15 //System.out.println("test n" + n); 16 17 for(int i = 0; i < m; i++) { 18 if(array[i]

JS去除字符串左右两端的空格(转载)

痞子三分冷 提交于 2020-03-25 19:27:46
来源:https://www.cnblogs.com/fanyf/p/3785387.html var str=' 测试 '; 一、函数   <script type="text/javascript">    function trim(str){ //删除左右两端的空格    return str.replace(/(^\s*)|(\s*$)/g, "");    }    function ltrim(str){ //删除左边的空格    return str.replace(/(^\s*)/g,"");    }    function rtrim(str){ //删除右边的空格    return str.replace(/(\s*$)/g,"");    } 函数调用 trim(str) 二、js对象的方法 String.prototype.trim=function(){    return this.replace(/(^\s*)|(\s*$)/g, "");    }    String.prototype.ltrim=function(){    return this.replace(/(^\s*)/g,"");    }    String.prototype.rtrim=function(){    return this.replace(/(\s*$)

《剑指offer》——替换空格

我与影子孤独终老i 提交于 2020-03-25 19:26:49
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 分析:这道题如果允许开辟一个新的数组,我们只需要从头开始扫描原数组中的每个字符, 1)若字符非空格则复制字符到新数组中, 2)若字符为空格则在新数组中填充“%”,“2”,”0”三个字符, 3)继续扫描重复以上操作。 难点在于如果不允许开辟新的数组空间,替换发生在原数组上,我们要做的是将1个字符替换为3个字符,且替换位置后面的字符不能被覆盖。下面我们以题目中的例子看一下字符串在内存中的存储,每个格子存储一个字符 1 W e a r e h a p p y . \0 2 W e % 2 0 a r e h a p p y . \0 3 W e % 2 0 a r t % 2 0 h a p p y . \0 第一行代表原字符串,后面两行代表两次替换操作完成整个字符串的替换,其中2在1的基础上以红色字体为基准后面的字符都向后移动2位,3在2的基础上以红色字体为基准后面的字符又都向后移动2位,而相对于1移动了4位。 初级想法:1)从头开始扫描数组,遇到空格,先将空格后面的字符做依次向后移动2位操作,然后填充"%","2","0",三个字符,记下填充后的下一个位置, 2)从这个位置接着扫描字符串,遇到空格做和上面同样的操作; 3

ES6 字符串扩展+正则扩展+数值扩展

会有一股神秘感。 提交于 2020-03-25 17:10:32
模版字符串 ``反引号表示 var cyy={ name:"cyy", age:18, say:function(){ console.log('我叫'+this.name+',我今年'+this.age+'岁'); }, say2:function(){ console.log(`我叫`+this.name+`,我今年`+this.age+`岁`);//模板字符串可以替代单引号或者双引号 }, say3:function(){ console.log(`我叫${ this.name },我今年${ this.age }岁`);//可以用${}替代字符串拼接 }, say4:function(){ console.log(`我叫${ `Miss ${this.name}` },我今年${ this.age }岁`);//${}可以嵌套 }, say5:function(){ console.log(`我叫${ `Miss ${this.name.toUpperCase()}` },我今年${ this.age }岁`);//${}可以使用字符串方法 } } cyy.say(); cyy.say2(); cyy.say3(); cyy.say4(); cyy.say5(); 普通方式渲染数据 //模拟ajax获取到数据 function getList(){ //ajax