字符串操作函数

2024-07-17

字符串操作函数(共11篇)

字符串操作函数 篇1

这篇文章主要介绍了perl中的字符串操作函数chomp与chop介绍,chomp与chop都是用于去除字符串变量尾部的字符,但它们有各自的区别,需要的朋友可以参考下

chomp与chop都是用于去除字符串变量尾部的字符,但它们有各自的区别,

chomp函数对变量起作用,而此变量含有字符串。如果字符串结尾有换行符,chomp可以去掉它。这基本上就是它能完成的所有功能,如下例:

代码如下:

$text=“alineoftextn”; #也可以由输入

chomp($text);#去掉换行符(n)。

它非常有用,基本上你的每一个程序都会用到它。如你将知道,这是将字符串末尾换行符去掉的最好方法。基于 Perl 中的一条基本原则:在需要使用变量的地方,可以使用赋值表达式来代替。我们有更简单的使用 chomp 的方法。Perl 首先做赋值运算,再使用这个变量。因此使用 chomp 的最常用方法是:

代码如下:

chomp($text=);#读入,但不含换行符

$text=;

chomp($text);

#同上,但用两步完成

第一眼见到时,第一种组合的方法看起来复杂些。如果把上述其看成两步操作,读一行再chomp,那写成两个语句的方法看起来自然些。如果将其看作一个操作,读入一行但不包括换行符,那写成一个语句的方法更恰当。由于绝大多数 Perl 程序员使用第一种写法,你也应该使用它。

chomp 是一个函数。作为一个函数,它有一个返回值,为移除的字符的个数。这个数字基本上没什么用:

代码如下:

$food=;

$betty=chomp($food); #得到值 1

如上,在使用 chomp 时,可以使用或不使用括号。这又是 Perl 中的一条通用规则:除非移除它们时含义会变,否则括号是可以省略的。如果结尾有两个或两个以上的换行符,chomp 仅去掉一个。如果没有,那什么也不做,返回 0。这种情况在一次读入一行时不会发生,但使用了输入分隔符(inputseparator)($/)(其不为换行符(n)),read 函数,或者将一些字符串结合起来就有可能发生,

在编写Perl程序代码的时候,也许你会有时会用chop() 函数来去掉输入的换行符“n”,有时候使用chomp() 函数。其实上面的用法都可以达到预期的效果,但它们也有细微的差别。

chop()函数,只是去除最后一个字符。

chomp()函数,就要首先判断最后一个字符是不是为“n”,它才去除。

chop函数会砍掉字符串变量的最后一个字符,并返回砍掉的字符,chop函数不管字符串里是什么都会剪短它,而chomp函数则更有选择性一些。不能chop直接量,只能chop变量。

用法:

代码如下:

chop VARIABLE

chop LIST

chop

例子:

如果chop一列LIST变量,那么列表中的每个字符串都会被剪短:

代码如下:

@lines=`cat myfile`;

chop @lines;

在最常见的情况下,chop可以用substr来表示:

代码如下:

$last_char = chop($var);

$last_char = substr($var, -1, 1, “”); # 同上

再来看下面的完整的例子:

代码如下:

#!/usr/bin/perl

$string1 = “This is test”;

$retval= chop( $string1 );

print “ Choped String is : $string1n”;

print “ Character removed : $retvaln”;

结果:

代码如下:

Choped String is : This is tes

Number of characters removed : t

字符串操作函数 篇2

为了说明方便,下列各程序对其数据进行初始化处理。当然,可以在运行程序时接收输入的各元素的值,也可以定义数组来存放数据值,但这不是本文重点阐述的问题,涉及的知识点又比较简单,这里就不举例了。

1 输出字符串

这个操作可以使用库函数printf()来实现,程序如下:

程序运行结果如下所示:

字符串的前7个字符是:'This is'

字符串的后9个字符是:'a string.'

在上例中,第一次调用printf()函数时,因为源串的长度大于7个字符,通过指定参数“%7.7s”来实现将源字符串截掉多余部分。第二次调用printf()函数时,是将源字符串的最后9个字符输出出来,其操作过程是:

(1)用strlen()函数计算出str字符串的长度,即strlen(str);

(2)strlen(str)-9是将str的长度减去9(9是将要输出的字符数),得到str中剩余的字符数;

(3)将strlen(str)-9和str的首地址相加,得到指向str中倒数第9个字符的指针;即str+(strlen(str)-9)。这个指针就是printf()函数的第二个参数。

(4)通过指定参数“%9.9s”,输出源字符串的最后9个字符。

2 删除字符串尾部的空格

C语言没有提供可删去字符串尾部空格的标准库函数,但是,编写完成这样功能的函数还是比较方便的。

程序运行结果为:

原字符串为:'This string has 4 spaces□□□□'

原串字符个数为:28

删除尾部空格后,新字符串为:'This string has 4 spaces'

新串字符个数为:24

rtrim()函数是用户自定义的一个函数,它的功能是:删去字符串尾部的空格。其算法是:从字符串中位于最后的那个字符(当然也就是最后一个空格)开始往回检查每个字符,当遇到第一个不是空格的字符时,就将该字符后面的第一个空格字符替换为'�'(字符串的结束标志),这样就相当于删去了字符串尾部的所有空格。

3 将字符串按指定长度输出

如果要按表格形式而不是一个挨一个无格式输出一组字符串,就需要将字符串输出成指定的长度,利用printf()函数可以完成这一任务。

在本例中,用下述语句来输出这些数据:printf("%-10.10s",data[i]);其中参数"%-10.10s"指示printf()函数按10个字符的长度输出一个字符串。在第一个10的前面加上减号(-)后,printf()函数就会使字符串左对齐,并在字符串的尾部加入空格,以使其长度达到10个字符。上例的输出结果类似于一张表格,如下所示:

4 删去字符串头部的空格

C语言也没有提供可删去字符串头部空格的标准库函数,下面就来编写一个这样的程序。

其新串字符个数为:33

字符串操作函数 篇3

关键词:查询;函数;数量;销售产品;数据表;任务;提成

Microsoft Office系列办公软件以其强大的功能和优良的性能成为人们办公软件的首选,而其中的Excel更是电子表格领域的权威,很方便地对数据、公式、函数和图像进行处理,被广泛地应用于文秘、经济、管理、统计、财会、审计、金融、工程、数据处理及相关行业等多个领域。

如在实际工作中常常需要在非常多的记录中查找特定的信息,这是非常麻烦的事情,这时要涉及到各种查找和引用函数。查找和引用函数可在数据清单或数据表中查找特定的数值,或者查找某一个单元格的引用。如果熟练掌握,可灵活地应用到实际工作和生活中。

统计某公司员工某年某月的销售情况,现希望查询,当输入员工姓名和销售产品名称时,可以自动查询员工销售该产品的数量,根据产品规定销售底限判断是否完成了任务,最后根据销售额确定其销售每种产品应得的提成,并计算出总的奖金提成。

设表1:打开Excel,首先要有所有员工及销售各种产品数量的数据统计表,数据统计表:所有员工姓名为列,销售不同的产品为行,内容为销售各种产品名数量的二维表。

1 首先根据要求,将规定底限、需要查找的条件及提成输入到数据表中

这里需要准备3张数据表,表1,员工销售情况数据统计表;表2:规定销售各个产品数量的任务底限数据表;表3:确定销售提成的表。这3张表当列出查找条件和已有数据来查找某员工或所有员工及销售某产品的数量和其他信息。

2 查找某员工销售某产品的数量

在单元格中插入公式“=INDEX(Array,MATCH(Lookup_value1, Lookup_array1,0),MATCH(Lookup_value2,Lookup_array2,0))”,按下Enter键后得到计算结果。

注:Array:表1区域,即单元格区域,这里指所有员工及销售各种产品数量的区域。

Lookup_value1: 获取某员工姓名

Lookup_value2:获取该员工所销售的产品名

Lookup_array1:所有员工姓名的区域,这里是列

Lookup_array2:所有产品名的区域,这里是行

在此公式中,应用了INDEX函数和MATCH函数。要获取输入的员工姓名和销售产品所对应的销售数量,首先使用MATCH函数返回员工姓名 (Lookup_value1)在Lookup_array1区域中所在的行号,以及产品名(Lookup_value2)在区域Lookup_array2中所在的列标,然后再利用INDEX函数返回单元格区域(Array)中该行号与列标交叉处单元格的值。

3 判断某员工销售某产品的数量是否完成任务

设表2:在表1中,即在所有員工及销售各种产品数量的数据二维表内增加“规定销售产品数量的任务底限”一行,针对每一产品应完成的销售最低任务值。

在单元格中插入公式 “=CHOOSE(IF(INDEX(Array,Row_num,MATCH(Lookup_value2,Lookup_array2,0))>Lookup_value3,1,2),”未完成”,”完成”)”,按下Enter键后得到计算结果。

Array:表2区域,即单元格区域,这里指所有员工及销售各种产品数量及规定销售产品数量的任务底限的区域。

注:Row_num:行号,即规定销售各产品数量的任务底限数量

Lookup_value2:获取该员工所销售的产品名

Lookup_array2:所有产品名的区域,这里是行

Lookup_value3:某员工销售某产品的数量

判断某员工销售某产品的数量是否完成任务,即判断销售数量中的结果是否超过了规定任务底限中的值,因此首先使用MATCH函数获取产品所在的列号,即产品所在的列号,再使用IF函数来进行判断,使用CHOOSE函数返回值,若超过了规定底限,则返回“完成”,否则返回“未完成”。

4 计算某员工销售某产品的应得提成

设表3:确定销售提成的表。如设提成比列为第3列。当提成为3%,销售下限的数量,上限的数量;当提成为5%,销售下限的数量,上限的数量;当提成为8%,销售下限的数量,上限的数量;当提成为10%,销售下限的数量,上限的数量;

在单元格中插入公式“=VLOOKUP(Lookup_value3,Table_array,3)”,按下Enter键后得到计算结果。

注:Lookup_value3:某员工销售某产品的数量

Table_array:数据表3:即销售提成的表

计算某员工销售某产品的应得提成,即比较销售数量与销售提成中的上下限,使用VLOOKUP函数进行竖直查找,返回Table_array区域中第3列的值,即提成的数字。如当某员工销售某产品的数量超过提成为10%的数量,进行查找后得出应得提成为10%,即0.1。

5 计算某员工销售所有产品应得的奖金提成

设第一行第一列为第一个员工,同行第二列为第一个员工销售的第一个产品;同行第三列为第一个员工销售的第二个产品;同行第四列为第一个员工销售的第三个产品……;在单元格中插入公式“=B1*VLOOKUP(B1,Table_array,3)+C1*VLOOKUP(C1,Table_array,3)+D1*VLOOKUP(D1, Table_array,3)+E1*VLOOKUP(E1, Table_array,3)+……”,

按下Enter键后得到计算结果。

注:Table_array:数据表3:即销售提成的表

要计算某员工的奖金提成,将每种产品的销售数量与提成比例相乘可得到销售该产品的奖金提成,再将各个产品的销售提成相加就是该员工的奖金提成总和。

6 计算其他员工销售产品应得的奖金提成

利用自动填充功能,当按下Enter键后得到计算结果,然后拖动此单元格,使其自动填充其他员工销售产品应得的计算奖金提成的單元格中。

现在完成了使用引用和查询函数计算员工奖金评定的操作。此时只需输入条件后,即可查找某员工或所有员工及销售某产品的数量及奖金提成情况和其他信息。

上述所用函数可以在数据清单或数据表中查找特定的数据,要达到准确输出,就要查询准确,数据准确,函数参数引用准确。

说明:

INDEX函数:得到指定的内容

用途:返回表或区域中的值或值的引用。函数INDEX有两种形式:数组形式和引用形式。

数组形式:返回指定单元格或单元格数组的元素值,此元素由行序号和列序号的索引值给定。当函数INDEX的第一个参数为数组常量时,使用数组形式。

格式与参数:INDEX(Array,Row_ num,Column_num)

MATCH函数:数组中查找值

用途:返回在指定方式下与指定数值匹配的数组中元素的相应位置。

格式与参数:MATCH(Lookup_value,Lookup_array,Match_type)

CHOOSE函数:列值中查找值

用途:使用Index—num返回数值参数列表中的数值。使用CHOOSE可以根据索引号从最多254个数值中选择一个。

格式与参数:CHOOSE(lndex- num,Valuel,Value2,…)

VLOOKUP函数:竖直查找

用途:在表格或数值的首列查找指定的数值,并在表格或数组中指定行的同一列中返回一个数值。

格式与参数:VLOOKUP(Lookup_value,Table_array,Col_index_num,Range_lookup)

参考文献:

[1]陈锡卢,杨明辉.Excel效率手册[M].北京:清华大学出版社,2014.

[2]Excel Home编著.Excel2007应用大全[M].北京:人民邮电出版社,2012.

[3]Excel Home. Excel 2010函数与公式实战技巧精粹[M].北京:人民邮电出版社,2014.

[4]伍昊.你早该这么玩Excel[M].北京:北京大学出版社,2011.

字符串操作函数 篇4

如果我们不多加一个字符空间,会发生致命的错误,那么我们通过案例来说明。

-------------我是分割线------------------

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include

#include

#include

intmain

{

charstr[]=“MengLiang”;

//此处分配空间没有考虑到'

char*New_str=(char*)malloc(strlen(str));

strcpy(New_str,str);

printf(“TheNew_str=%sn”,New_str);

free(New_str);

New_str=NULL;

system(“pause”);

return0;

}

-------------我是分割线------------------

我在注释中已经写了,那么这小段程序的结果呢?

-------------我是分割线------------------

正确的修改为:

-------------我是分割线------------------

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#include

#include

#include

intmain()

{

charstr[]=“MengLiang”;

//此处的加1就是为'来服务的

char*New_str=(char*)malloc(strlen(str)+1);

strcpy(New_str,str);

printf(“TheNew_str=%sn”,New_str);

free(New_str);

New_str=NULL;

system(“pause”);

return0;

}

-------------我是分割线------------------

C语言的自由意味着我们要自制!

----------------------------------------------

链表操作函数笔试题 篇5

struct ListNode

{

long id;

struct ListNode* next;

}

写一个返回下一个节点的函数,没有的话返回0

struct ListNode* ListNext(struct ListNode* cur);

写一个在已经排序好的.链表中插入一个节点的函数,返回插入位置的前一个节点

如果节点已经在链表里边返回0

struct ListNode* ListInsert(struct ListNode* head,struct ListNode* newNode);

写一个删除节点的函数,返回删除后的前一个节点,如果节点不在链表里边返回0

字符串输出格式 篇6

%-0m.nl或h格式字符

下面对组成格式说明的各项加以说明:

①%:表示格式说明的起始符号,不可缺少。

②-:有-表示左对齐输出,如省略表示右对齐输出。

③0:有0表示指定空位填0,如省略表示指定空位不填。

④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。

n指精度,用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。

⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

格式小结:

(1)最常用的格式是%d,含义是以10进制形式打印一个整数。

如果输出的整数是负数,则输出的第一个字符就是-号。

%d:按整型数据的实际长度输出。

%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

%ld:输出长整型数据。

(2)%u格式与%d格式类似,只不过要求打印无符号10进制整数。

以无符号十进制形式输出整数。

对长整型可以用“%lu”格式输出。同样也可以指定字段宽度用“%mu”格式输出。

(3)%o格式请求输出8进制整数,以无符号八进制形式输出整数。

对长整型可以用“%lo”格式输出。同样也可以指定字段宽度用“%mo”格式输出。

(4)%x和%X格式请求输出16进制整数。

%x格式中用小写字母a,b,c,d,e,f来表示10到15之间的数,以无符号十六进制形式输出整数。

对长整型可以用“%lx”格式输出。同样也可以指定字段宽度用“%mx”格式输出。%X格式中用大写字母A,B,C,D,E,F来表示10到15之间的数

共同点:8进制和16进制整数总是作为无符号数处理的。

(5)%s格式用于打印字符串,与之对应的参数应该是一个字符指针,待输出的字符始于该指针所指向的地址,直到出现一个空字符(')才终止。%s:例如:printf(“%s”, “CHINA”)输出“CHINA”字符串(不包括双引号)。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。

%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。

(6)%c格式用于打印单个字符:例如:

printf(“%c”,c);等价于 putchar(c);

(7)%g,%f和%e这三个格式用于打印浮点值。

%g格式用于打印那些不需要按列对齐的浮点数特别有用。其作用有二: 一,去掉该数尾多余的零(没有达到六位的数)

二,保留六位有效数字(多余六位的)

%e格式用于打印浮点数时,一律显示地使用指数形式:例如:输出圆周率时是:

3.141593e+00

两者的区别:

%g格式打印出的数是总共6位有效数字

%e格式打印出小数点后的6位有效数字

%f禁止使用指数形式来表示浮点数。因此圆周率输出为:3.141593

(但注意它的精度要求:也是小数点后6位有效数字)

(8)%%格式用于打印一个%字符。

(9)%E和%G只是在输出时用大写字母(E)代替了小写字母(e)

⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:

%f:不指定宽度,整数部分全部输出并输出6位小数。

%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。⑧e格式:以指数形式输出实数。可用以下形式:

%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。/*******************************************************************/ unsigned int i=295;

printf(“%dn”,i);

295

Press any key to continue

(1).可以在“%”和字母之间插进数字表示最大场宽。

例如: %2d 表示输出3位整型数, 不够2位右对齐。

例如: %5d 表示输出3位整型数, 不够5位右对齐。

例如: %10d 表示输出3位整型数, 不够10位右对齐。

unsigned int i=295;

printf(“%2dn”,i);

printf(“%5dn”,i);

printf(“%10dn”,i);

295

295

295

Press any key to continue

(2).补0或者其它

例如: %02d 表示输出3位整型数, 不够2位右对齐,补0。

例如: %05d 表示输出3位整型数, 不够5位右对齐,补0。

例如: %010d 表示输出3位整型数, 不够10位右对齐,补0。

unsigned int i=295;

printf(“%02dn”,i);

printf(“%05dn”,i);

printf(“%010dn”,i);

295

00295

0000000295

Press any key to continue

(3).负数

int i=-295;

printf(“%02dn”,i);

printf(“%05dn”,i);

printf(“%010dn”,i);

-295

-0295

-000000295

Press any key to continue

(4).可以控制输出左对齐或右对齐, 即在“%”和字母之间加入一个“-” 号可 说明输出为左对齐, 否则为右对齐。

unsigned int i=295;

printf(“%-02dn”,i);

printf(“%-05dn”,i);

printf(“%-010dn”,i);

295

295

295

Press any key to continue

(5).可以在“%”和字母之间加小写字母l, 表示输出的是长型数。

例如: %ld 表示输出long整数

%lf 表示输出double浮点数

(6).%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6, 小数点占一位, 不够9位右对齐。

例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除./*

unsigned int i=295;

printf(“%dn”,i);

printf(“%1dn”,i);

printf(“%09dn”,i);

printf(“%09dn”,(unsigned char)i);

printf(“%9dn”,(unsigned char)i);

printf(“%-9dn”,(unsigned char)i);

*/

/*

295

295

000000295

000000039

Press any key to continue

*/

/*******************************************************************/ 对于m.n的格式还可以用如下方法表示(例)

int m=10,n=5;

char ch[]=“abcdefghijklmnopqrst”;

printf(“%*.*sn”,m,n,ch);//输出为abcde

前边的*定义的是总的宽度,后边的定义的是输出的个数,分别对应外面的参数m和n。

我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式 /*******************************************************************/ “%08lxn”,4byte

“%04xn”,2byte

字符串操作函数 篇7

目的

把字符串逐字符或逐词反转过来,这个蛮有意思的,

方法

先看逐字符反转吧,第一种设置切片的步长为-1

代码如下:

revchars=astring[::-1]

In [65]: x=‘abcd‘

In [66]: x[::-1]

Out[66]: ‘dcba‘

第二种做法是采用reversed,注意它返回的是一个迭代器,可以用于循环或传递给其它的“累加器”,不是一个已完成的字符串。

代码如下:

revchars=‘‘.join(reversed(astring))

In [56]: y=reversed(x)

In [57]: y

Out[57]:

In [58]: ‘‘.join(y)

Out[58]: ‘dcba‘

接着来看逐词反转。

第一种做法,创建一个列表,将列表反转,用join方法合并

代码如下:

In [38]: s=‘Today is really a good day‘

In [39]: rev=s.split()

In [40]: rev

Out[40]: [‘Today‘, ‘is‘, ‘really‘, ‘a‘, ‘good‘, ‘day‘]

In [41]: rev.reverse()

In [42]: rev

Out[42]: [‘day‘, ‘good‘, ‘a‘, ‘really‘, ‘is‘, ‘Today‘]

In [45]: ‘ ‘.join(rev)

Out[45]: ‘day good a really is Today‘

也有一行解决的代码:

代码如下:

rev=‘ ‘.join(s.split()[::-1])

第二种做法,可以不改变原先的空格,采用正则式来做:

代码如下:

In [46]: import re

In [47]: rev=re.split(r‘(s+)‘,s)

In [48]: rev

Out[48]: [‘Today‘, ‘ ‘, ‘is‘, ‘ ‘, ‘really‘, ‘ ‘, ‘a‘, ‘ ‘, ‘good‘, ‘ ‘, ‘day‘]

In [49]: rev.reverse()

In [50]: rev

Out[50]: [‘day‘, ‘ ‘, ‘good‘, ‘ ‘, ‘a‘, ‘ ‘, ‘really‘, ‘ ‘, ‘is‘, ‘ ‘, ‘Today‘]

In [51]: rev=‘‘.join(rev)

In [52]: rev

Out[52]: ‘day good a really is Today‘

可以考虑采用reversed()来代替可读性较差的[::-1]

代码如下:

revwords=‘ ‘.join(reversed(s.split()))

Python字符串替换实例分析 篇8

这篇文章主要介绍了Python字符串替换的方法,实例对比分析了单个字符替换与字符串替换的相关技巧,非常简单实用,需要的朋友可以参考下

本文实例讲述了Python字符串替换的方法,分享给大家供大家参考。具体如下:

单个字符替换

s = ‘abcd‘a = [”a“, ”b“, ”c“]b = [”c“, ”d“, ”e“]import strings.translate(string.maketrans(‘‘.join(a),‘‘.join(b)))print s

输出结果为:abcd

字符串替换,改善版

s = ”hello, i‘m mouren, hehe~~,hehe~~mourenmouren“a = [”mouren“, ”hehe“]b = [”mr“, ”hoho"]import redic = dict(zip(a,b))pattern = re.compile(‘(‘ + ‘|‘.join(a) + ‘)‘)s = pattern.sub(lambda a:dic[a.group()], s)print s

输出结果为:hello, i‘m mr, hoho~~,hoho~~mrmr

希望本文所述对大家的Python程序设计有所帮助,

★ python轻松实现代码编码格式转换

★ python 查找文件夹下所有文件 实现代码

★ python学习之操作mysql

★ 巧用WPS的“查找和替换”来提高工作效率

★ InDesign的文字快速查找替换编辑技巧

★ 编码实现字符串转整型的函数

★ SQL 中自己创建函数,分割字符串数据库教程

★ Python 随机生成中文验证码的实例代码

★ asp实现读取数据库输出json代码

Python3字符串学习教程 篇9

这篇文章主要介绍了Python3字符串学习教程,是Python入门学习中的基础知识,需要的朋友可以参考下

字符串类型是python里面最常见的类型,是不可变类型,支持单引号、双引号、三引号,三引号是一对连续的单引号或者双引号,允许一个字符串跨多行,

字符串连接:前面提到的+操作符可用于字符串连接,还可以直接把几个字符串连在一起写,另外调用join方法也可以连接字符串。

只适用于字符串连接的操作符:前面提到了一些序列类型共用的操作符,除此之外,字符串还有只属于自己的操作符,包括格式控制操作符%、字符串模板string.Template、原始字符串操作符r/R、Unicode字符串操作符u/U。

下面列举一些与字符串类型有关的模块。

string:字符串操作相关函数和工具,比如Template类。

re:正则表达式,强大的字符串模式匹配模块。

struct:字符串和二进制之间的切换。

c/StringIO:字符串缓冲对象,操作方法类似于file对象。

base64:Base16,32,64数据编解码。

codecs:解码器注册和基类。

crypt:进行单方面加密。

difflib:找出序列间的不同。

hashlib:多种不同安全哈系算法和信息摘要算法的API,python2.5废除。

hma:HMAC信息鉴权算法的python实现。

md5:RSA的MD5信息摘要鉴权。

rotor:提供多平台的加解密服务。

sha:NIAT的安全哈系算法SHA。

stringprep:提供用于IP协议的Unicode字符串。

textwrap:文本打包和填充。

unicodedata:Unicode数据库。

Python 3 的源码的默认编码方式为 UTF-8

在Python 3,所有的字符串都是使用Unicode编码的字符序列。

utf-8 是一种将字符编码成字节序列的方式。字节即字节,并非字符。字符在计算机内只是一种抽象。字符串则是一种抽象的序列。在这里我们只讨论字符串,不讨论字节。

在Python 中,字符串可以用单引号括起来,也可以用双引号,甚至是三引号。

但如果字符串中含有单引号,你应该用双引号来括,或者用转义符加单引号括起来。含有双引号的同理。

三引号的字符串可以换行!

>>>‘Let‘s go!‘ SyntaxError: invalid syntax >>>“Let‘s go!” “Let‘s go!” >>>‘Let‘s go!‘ “Let‘s go!” >>>‘‘‘‘‘begin and next end‘‘‘ ‘beginnandnnextnend‘

字符串是不可修改的,这点很重要!你可以把它想象为字符组成的元组。

>>>s = “HelloWorld” >>>s[0] = ‘h‘ Traceback (most recent call last): File “

”, line 1, in s[0] = ‘h‘ TypeError: ‘str‘ object does not support item assignment

如果你想修改它,可以先转换成列表,修改完成后再转为字符串。

>>>s ‘HelloWorld‘ >>>L = list(s) >>>L [‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘W‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘] >>>L[0] = ‘h‘ >>>‘‘.join(L) #这是什么?别着急,下面我们会谈到 ‘helloWorld‘

字符串可以进行直接拼接,但如果是两个变量代表的字符串,你还是用 + 号吧

>>>s = “Hello”“World” >>>s ‘HelloWorld‘ >>>s1 = “Hello” >>>s2 = “World” >>>s1s2 Traceback (most recent call last): File “

”, line 1, in s1s2 NameError: name ‘s1s2‘ is not defined >>>s1+s2 ‘HelloWorld‘

字符串操作和方法:

len(s) 返回字符串长度

x in s 查询 x 是否在 s 中

>>>s = “HelloWorld” >>>len(s) 10 >>>“ll” in s True

s.find( x ) 在字符串 s 中找子串 x ,找到则返回最左端的索引,找不到则返回-1

>>>s ‘HelloWorld‘ >>>s.find(“l”) 2 >>>s.find(‘w‘) -1

s.splitlines() 将多行字符串分割成多个单行字符串组成的列表,换行符被吸收

>>>s = ‘‘‘‘‘begin ...then.. ...next.. end...‘‘‘ >>>s.splitlines() [‘begin‘, ‘...then..‘, ‘...next..‘, ‘end...‘]

s.split( x ) 以 x 作为分隔符将 s 分割成一个字符串列表,如果不提供x,则程序会自动将所有空格和换行作为分隔符分割

>>>s = “here#there” >>>s.split(‘#‘) # #作为分隔符 [‘here‘, ‘there‘] >>>s = ‘‘‘‘‘begin .then.. and .next. end‘‘‘ >>>s.split() #默认情况将所有换行和空格都分割 [‘begin‘, ‘.then..‘, ‘and‘, ‘.next.‘, ‘end‘]

s.lower()  返回s 的小写形式的字符串

s.upper() 返回 s 的大写形式的字符串

>>>s = ‘HelloWorld‘ >>>s.lower() ‘helloworld‘ >>>s.upper() ‘HELLOWORLD‘

s.join( seq ) split 的逆方法,将序列 seq 用 s 连接起来,必须是字符串序列

>>>L = [‘1‘,‘33‘,‘42‘] >>>‘+‘.join(L) #用+来连接 ‘1+33+42‘ >>>L = list(s) #拆开s >>>L [‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘W‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘] >>>‘‘.join(L) #粘合了,。。 ‘HelloWorld‘

s.replace( x, y) 将 s 中所有匹配 x 的项用 y 代替,如果找不到,那就直接返回 s 咯

>>>s ‘HelloWorld‘ >>>s.replace(“World”,“Cheng”) ‘HelloCheng‘ >>>s.replace(“world”,“Cheng”) #知道为什么吧... ‘HelloWorld‘

s.strip( x ) 如果不提供 x,那么返回去除了首尾两侧空格的字符串,如果提供了字符串 x,那么将去除s首尾所有在 x 中的字符并返回

>>>s = “ Hi,I‘m Alice! ” >>>s.strip() “Hi,I‘m Alice!” >>>s.strip(“! ”) #这是两个字符哦 “Hi,I‘m Alice” #少了一个感叹号哦!

再次注意:以上方法都没有改变原字符串,字符串是不可改变的!

以下简单看看:

s.starstwith( x ) 测试 s 是否以 x 开头

s.endswith( x ) 测试 s 是否以 x 结尾

s.isalnum() 测试 s 是否全是字母和数字,并至少有一个字符

s.isalpha()  测试 s 是否全是字母,并至少有一个字符

s.isdigit() 测试 s 是否全是数字,并至少有一个字符

s.isspace() 测试 s 是否全是空白字符,并至少有一个字符

s.islower() 测试 s 中的字母是否全是小写

s.isupper() 测试 s 中的字母是否便是大写

s.istitle() 测试 s 是否是首字母大写的

让我们重点关注一个强大的格式化方法 format ,看下面代码

>>>name = ‘Jonh‘ >>>call = ‘13560300xxx‘ >>>“{0}‘s telephone number is {1}”.format(name,call) # (1) “Jonh‘s telephone number is 13560300xxx” >>>addr = “A103” >>>“{0}‘s telephone number is {1} and his address is {2}”.format(name,call,addr) #(2) “Jonh‘s telephone number is 13560300xxx and his address is A103”

(1)句中,字符串中 {0} 被 format 的第一个参数代替,{1} 被第二个参数代替。两个参数不够?事实上,你可以给予它任意多个参数,然后用相同个数的替换字段进行替换。什么是替换字段?{0},{1}就叫做替换字段。我们在第(2)句中使用了3个替换字段,{0}对应name, {1}对应call,{2}对应addr。再多的参数也类似于刚才的做法。

那么,仅仅是这样?当然不是!让我们继续看

>>>L = [2,3,5,7] >>>print(“x is {0[0]}, y is {0[2]}”.format(L)) x is 2, y is 5

{0[0]} 表示L[0],{0[2]} 表示L[2],它们叫做复合字段名,你可以:

(1)使用列表作为参数,并且通过下标索引来访问其元素(跟上一例类似)

(2)使用字典作为参数,并且通过键来访问其值

>>>d {‘b‘: 2, ‘a‘: 1} >>>print(“x is {0[a]}, y is {0[b]}”.format(d)) x is 1, y is 2 >>>d = {2:3.5,7:4.5} >>>print(“x is {0[2]}, y is {0[7]}”.format(d)) x is 3.5, y is 4.5

d 为字典,a 、b为键,{0[a]} 对应到了值2(注意:是a,b,不是‘a‘, ‘b‘)

(3)使用模块作为参数,并且通过名字来访问其变量及函数

>>>print(“{0.random}”.format(random))

(4)使用类的实例作为参数,并且通过名字来访问其方法和属性

>>>class A: pass >>>x = A() >>>print(“The class is {0.__class__}”.format(x)) The class is

(5)以上方法的任意组合

替换字段除了整数,你还可以使用参数名字

>>>print(“{name}‘s telephone number is {call}”.format(name = “Jonh”,call = 69993)) Jonh‘s telephone number is 69993

在替换域中,你还可以使用格式说明符。冒号 : 标示格式说明符的开始。

Go语言按字节截取字符串的方法 篇10

这篇文章主要介绍了Go语言按字节截取字符串的方法,涉及Go语言操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了Go语言按字节截取字符串的方法,分享给大家供大家参考。具体实现方法如下:

代码如下:

// 按字节截取字符串 utf-8不乱码

func SubstrByByte(str string, length int) string {

bs := []byte(str)[:length]

bl := 0

for i:=len(bs)-1; i>=0; i-- {

switch {

case bs[i] >= 0 && bs[i] <= 127:

return string(bs[:i+1])

case bs[i] >= 128 && bs[i] <= 191:

bl++;

case bs[i] >= 192 && bs[i] <= 253:

cl := 0

switch {

case bs[i] & 252 == 252:

cl = 6

case bs[i] & 248 == 248:

cl = 5

case bs[i] & 240 == 240:

cl = 4

case bs[i] & 224 == 224:

cl = 3

default:

cl = 2

}

if bl+1 == cl {

return string(bs[:i+cl])

}

return string(bs[:i])

}

}

return “”

}

字符串操作函数 篇11

如何跨进程发送字符串?

问题描述:

如何跨进程发送字符串?

解决方案:

参考:

blog.csdn.net/wu_07/archive/2004/11/26/194814.aspx

community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=205761

个人:

有两种办法:

一是向目标对象发送wm_settext消息

参考:

www.ttian.net/article/show.php?id=132

community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=204580

www.vchelp.net/itbookreview/view_paper.asp?paper_id=1198

dev.csdn.net/article/58/58647.shtm

dev.19xz.com/soft/60230.htm

二是先将要发送的内容复制到剪贴板,再向目标对象发送wm_paste消息

www.blogcup.com/read_yang119345_5312.html

www.zdnet.com.cn/developer/code/story/0,2000081534,39156949,00.htm

两种方法都必须首先用FindWindowEx等函数首先枚举到目标对象的句柄,下面操作就简单了,

如何跨进程发送字符串?(收藏)数据库教程

上一篇:一起走过的日子散文下一篇:阴极保护测试桩安装与测量方法技术

本站热搜

    相关推荐