SAP字符串及特殊字符处理
SAP字符串及特殊字符处理
1. 字符转ASCII
URL_ASCII_CODE_GET
特点,根据这个算法可以中文转ASCII
DATA: char_cd(2) TYPE c.
CALL FUNCTION 'URL_ASCII_CODE_GET'
EXPORTING
trans_char = 'A'
IMPORTING
char_code = char_cd.
WRITE /: char_cd.
2. 利用cl_rpe_convert字符与ASCII互转
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .
START-OF-SELECTION.
CREATE OBJECT l_con.
CALL METHOD l_con->string_to_xstring
EXPORTING
input = 'ABC'
IMPORTING
output = xstr.
CALL METHOD l_con->xstring_to_string
EXPORTING
input = '426172727942'
IMPORTING
output = str.
WRITE / : xstr ,str.
3. 特殊字符处理利用类CL_ABAP_CHAR_UTILITIES在字符串中加入
tab字符,回车换行符,换页符
DATA: str TYPE string ,
xstr TYPE xstring,
l_con TYPE REF TO cl_rpe_convert .
START-OF-SELECTION.
CREATE OBJECT l_con.
str = cl_abap_char_utilities=>cr_lf.
CALL METHOD l_con->string_to_xstring EXPORTING
input = str
IMPORTING
output = xstr.
CALL METHOD l_con->xstring_to_string EXPORTING
input = '4213'
IMPORTING
output = str.
WRITE / : xstr ,str.
字符串处理
实验1 字符串处理 1.1 实验内容 1. 下面程序输出有无问题,问题在什么地方 #include 程序。 #include "stdio.h" void main(){ char a[100]; int i; gets(a); for(i=0;__a[I]!=0 ____;++i); 没有循环体,循环体为空printf("%d\n",i); } 在前面的图文中,我们讲了“串”这种数据结构,其中有求“子串在主串中的位置”(字符串的模式匹配)这样的算法。解决这类问题,通常我们的方法是枚举从A串(主串)的什么位置起开始与B串(子串)匹配,然后验证是否匹配。假设A串长度为n,B串长度为m,那么这种方法的复杂度是O(m*n)的。虽然很多时候复杂度达不到m*n(验证时只看头一两个字母就发现不匹配了),但是我们有许多“最坏情况”,比如: A=“aaaaaaaaaaaaaaaaaaaaaaaaab”,B=“aaaaaaaab”。 大家可以忍受朴素模式匹配算法(前缀暴力匹配算法)的低效吗?也许可以,也许无所谓。 有三位前辈D.E.Knuth、J.H.Morris、V.R.Pratt发表一个模式匹配算法,最坏情况下是O(m+n),可以大大避免重复遍历的情况,我们把它称之为克努特-莫里斯-普拉特算法,简称KMP算法。 假如,A=“abababaababacb”,B=“ababacb”,我们来看看KMP是怎样工作的。我们用两个指针i和j分别表示,。也就是说,i是不断增加的,随着i 的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前j个字符(j当然越大越好),现在需要检验A[i+1]和B[j+1]的关系。 例子: S=“abcdefgab” T=“abcdex” 对于要匹配的子串T来说,“abcdex”首字符“a”与后面的串“bcdex”中任意一个字符都不相等。也就是说,既然“a”不与自己后面的子串中任何一字符相等,那么对于主串S来说,前5位字符分别相等,意味着子串T的首字符“a”不可能与S串的第2到第5位的字符相等。朴素算法步骤2,3,4,5的判断都是多余,下次的起始位置就是第6个字符。 例子: S=“abcabcabc” T=“abcabx” strcpy(char destination[], const char source[]); strcpy:将字符串source拷贝到字符串destination中。 strcpy函数应用举例 原型:strcpy(char destination[], const char source[]); 功能:将字符串source拷贝到字符串destination中 例程: #include 字符串处理 B.基本题(SC6_5B.cpp) 【题目描述】 在主字符串中删除所有子字符串。打开SC6_5B.cpp文件,完成程序的编写。 【输入】 输入文件SC6_5B.in有2行,第1行是主字符串,第2行是子字符串。 【输出】 输出文件SC6_5B.out有1行,即删除所有子字符串后的主字符串。 【输入输出样例1】 2】 【输入输出样例 0≤字符串长度≤1000。 Code: #include "stdio.h" #include "string.h" const int N0=1000; char *index( char *s, char *sub )//在s中查找sub,找到返回首字符地址,找不到返回空{ int i=0, j=0; char *p=sub; if( *sub=='\0' )return NULL; //****************************************** for(i=0; i+strlen(sub)-1 } return NULL; //========================================== } int main() { char s[N0+1],sub[N0+1], *p, *q; int sublen; //freopen( "sc6_5b.in", "r", stdin); //freopen( "sc6_5b.out", "w", stdout); gets(s); gets(sub); sublen=strlen( sub ); while( p=index( s, sub ) ) { q=p+sublen; while( *p++=*q++ ); //在s中p的位置删除sub } puts(s); return 0; } C.拓展题(SC6_5C.cpp) 【题目描述】 输入3行字符串,分别是s字符串, t字符串和r字符串。如果s字符串中有包含t字符串,则用r字符串替换之。例如:s=“12aaabc3aaaaaabc#$%aaabc”,t=“aaabc”,r=“abc”,将s中的“aaabc”替换成“abc”之后,s=“12abc3aabc#$%abc”。输出替换之后的s字符串。打开SC6_5C.cpp文件,完成程序的编写。 【输入】 输入文件SC6_5C.in包含有3行字符串,分别是s字符串, t字符串和r字符串。 【输出】 输出文件SC6_5C.out将s字符串中包含的t字符串,用r字符串替换之,输出替换之后的s字符串。 0≤字符串长度≤1000。 Code: Authorware 特殊字符的使用 在之前的小节中介绍文本输入模式时,讲解了其可使用的各种类型字符,包括表达式、转义符和通配符等。其中,转义符、通配符等字符都属于特殊的字符。本节将着重介绍Aut horware软件的各种特殊字符的使用方法。 1.通配符 通配符是指可以代替一个或多个字符的一种特殊符号。在Authorware的界面操作和代码编写过程中,经常需要匹配一个或多个字符串。此时,允许用户使用2种类型的通配符,即星号“*”和问号“?”。 ●星号“*”指代任意数量的字符组成的字符串。 ●问号“?”指代任意一个字符 通配符既可以单独使用,也可以与其他的普通字符、转义符等联合使用。 在进行界面操作时,在各种输入文本域中添加的通配符同样需要以引号括起来。例如, 定义为任意某一个字符,需输入“"?"”而非“?”。 2.转义符 转义符也是一种特殊字符。由于通配符和一些特殊功能的符号已经被赋予了特殊的含义,因此,在将这些特殊符号作为普通的字符输出时,需要使用一种替代的字符,这种字符就是转义符。很多编程语言都有转义符或转义的功能,Authorware也不例外。 例如,在之前的小节中已经介绍过,起分隔作用的竖线符“|”,以及用于定义次数的井号“#”等,都需要通过转义符才能转换为字符串并正确地输出。常用的转义符包括如下几种。 ●井号“#” 井号“#”的作用是定义次数。其后往往会跟一个数字用于定义固定的次数。如果需要将井号“#”输出,可根据不同的情况进行处理。如果井号“#”后跟的字符不是数字,则井号“#”不需要转义,直接即可输出。如果井号“#”后跟的字符是数字,就需要同时输入两个井号“#”,例如,“##10”并不表示重复10此,而是表示“#10”这个字符串。 ●竖线符“|” 竖线符“|”的作用是表示并列的多项选择。如某个字符串是以竖线符“|”为开头,则不需要转义,直接使用即可。如某个字符串中包含竖线符“|”且不再字符串的开头,则需要同时使用两个竖线符“|”,以对其进行转义。 ●星号“*”和问号“?” 如果在字符串中需要表述星号“*”和问号“?”,可在星号“*”或问号“?”之前添加一个转义符号斜杠“\”。 java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。 String相关函数 1)substring() 它有两种形式,第一种是:String substring(int startIndex) 第二种是:String substring(int startIndex,int endIndex) 2)concat() 连接两个字符串 例:String s="Welcome to "; String t=s.concat("AnHui"); 3)replace() 替换 它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: String replace(char original,char replacement) 例如:String s=”Hello”.replace(’l',’w'); 第二种形式是用一个字符序列替换另一个字符序列,形式如下: String replace(CharSequence original,CharSequence replacement) 4)trim() 去掉起始和结尾的空格 5)valueOf() 转换为字符串 6)toLowerCase() 转换为小写 7)toUpperCase() 转换为大写 8)length() 取得字符串的长度 例:char chars[]={’a',’b’.’c'}; String s=new String(chars); int len=s.length(); 9)charAt() 截取一个字符 例:char ch; ch=”abc”.charAt(1); 返回值为’b’ 10)getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[],int targetStart) sourceStart 指定了子串开始字符的下标 sourceEnd 指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。 Linux Shell特殊字符和控制字符大全Shell特殊字符 # 注释 ?表示注释 #注释 ?在引号中间和\#等表示#本身 ?echo ${PATH#*:} # 参数替换,不是一个注释 ?echo $(( 2#101011 )) # 数制转换,不是一个注释 ; 分隔 ?命令分隔,在一行中写多个命令 echo "aa" ; echo "bb" ?在条件中的if和then如果放在同一行,也用;分隔 ;; case条件的结束 . 命令相当于source命令 ?命令:source ?文件名的前缀,隐藏文件 ?目录:.当前目录,..父目录 ?正则表达式:匹配任意单个字符 "" 部分引用支持通配符扩展 ' ‘ 全引用,不进行通配符扩展 \ 转义 / 目录分隔符 , 多个命令都被执行,但返回最后一个 ` 后置引用 : 操作符 ?空操作 ?死循环: while : ?在if/then中表示什么都不做,引出分支 ?设置默认参数: : ${username=`whoami`} ?变量替换: : ${HOSTNAME?} ${USER?} ${MAIL?} ?在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如: : > data.xxx #文件"data.xxx"现在被清空了. 与 cat /dev/null >data.xxx 的作用相同然而,这不会产生一个新的进程,因为":"是一个内建命令. 在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影 响. 如果文件不存在,将创建. * 匹配0个或多个字符;数学乘法;**幂运算 ? 匹配任意一个字符;但在((a>b?a:b))表示c语言中的三目运算 $ ?取变量的值 echo $PATH ?正则表达式中表示行的结尾 ?${} 参数替换 ${PAHT} ?$* 所有参数 ?$# 参数个数 ?$$ 进程的ID ?$? 进程的返回状态 ( ) ?命令组,在一个子Shell中运行 (a=3;echo $a) 其中定义的变量在后面不可用 ?数组初始化: array=(a,b,c) { } 代码块,即一个匿名函数,但其中定义的变量在后面依然可用 { } \; 用在find的-exec中 $find -name *.txt -exec cat {} \; [ ] ?测试 [-z $1] ?数组元素 a[1]='test' ?[[]]表示测试使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错. Brute Force(BF或蛮力搜索) 算法: 这是世界上最简单的算法了。 首先将匹配串和模式串左对齐,然后从左向右一个一个进行比较,如果不成功则模式串向右移动一个单位。 速度最慢。 那么,怎么改进呢? 我们注意到Brute Force 算法是每次移动一个单位,一个一个单位移动显然太慢,是不是可以找到一些办法,让每次能够让模式串多移动一些位置呢? 当然是可以的。 我们也注意到,Brute Force 是很不intelligent 的,每次匹配不成功的时候,前面匹配成功的信息都被当作废物丢弃了,当然,就如现在的变废为宝一样,我们也同样可以将前面匹配成功的信息利用起来,极大地减少计算机的处理时间,节省成本。^_^ 注意,蛮力搜索算法虽然速度慢,但其很通用,文章最后会有一些更多的关于蛮力搜索的信息。 KMP算法 首先介绍的就是KMP 算法。 这个算法实在是太有名了,大学上的算法课程除了最笨的Brute Force 算法,然后就介绍了KMP 算法。也难怪,呵呵。谁让Knuth D.E. 这么world famous 呢,不仅拿了图灵奖,而且还写出了计算机界的Bible 示例 1.字符串输出示例。 程序: #include int x,y; x=strlen(a); y=strlen("abc13"); printf("%d\n%d\n\n",x,y); } 结果: 4.字符串连接函数的使用。 程序: #include 特殊数字符号大全-常用到的word 数学符号列举: 一x集合不等式方程A={x|x≤2}、B={x|x≥a},< >A∩B={2} t>0 n∈N n≥2.: 二x函数三角函数f(x) f-1(x) x2 √3 y=ax2+bx+c (a≠0) θ1、θ2,60° Asin(ωx+φ)+P π h1、h2, 三x矢量a、b 四x数据排列{an}a1=1 3tSn-(2t-3) Sn-1=3t 五x剖析几何P′(x′,y′) ⊙C b2x2+a2y2=a2b2 (A)AB (B)BC (C)CD (D)DA 更多的符号: 1、几何符号⊥∥∠⌒⊙≡ ≌△°|a| ⊥∽∠∟ ‖|| … ω (1)⑵(3)【】α β γ 2、代数符号&ra2uo; ∞ ∧∨~∫ ≤ ≥1x16 ≈ ∞ ∶〔〕〈〉《》「」『』】【〖三、运算符号× ÷ √ ± ≠ ≡ ≮≯4、集合符号A ∪∩B ∈Φ Ø ¢φ 五、特殊符号∑ π(圆周率)@#☆★○●◎◇◆□■▓⊿※¥Γ Δ Θ Λ Ξ Ο Π Σ Φ Χ φ Ω ∏ 六、推理符号← ↑ → ↓ ↖↗↘↙∴∵∶∷Þ Û Ü 7、标点符号` ˉ ˇ ¨ 、·`'8、数码符号ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ九、其他& ; §℃№ $£¥‰ ℉♂ ♀ ①②③④⑤⑥⑦⑧⑨⑩(1)⑵(3)⑷(5)⑹Γ Δ Θ Λ Ξ Ο Π Σ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω ∈∏ ∑ ∕ √ ∝∞ ∟ ∠∣∥∧∨∩ ∪∫ ∮∴∵∶∷∽≈ ≌≒≠ ≡ ≤ ≥ ≦≧≮≯⊕⊙⊥⊿⌒指数0123:º¹²³ 〃¼ ½ ¾符号意义∞ 无穷大π 圆周率|x| 函数的绝对值∪集归并∩ 集合交≥ 大于等于≤ 小于等于≡ 恒等于或者同余ln(x) 以e为底的对数lg(x) 以10为底的对数floor(x) 上取整函数ceil(x) 下取整函数x mod y 求余数{x} 小数部分x - floor(x) ∫f(x)δx 不定积分∫[a:b]f(x)δx a到b的定积分∑[1≤k≤n]f(k) 对n进行求和,可以拓广至很多情况,如:∑[n is prime][n <10]f(n) ∑∑[1≤i≤j≤n]n^2 lim f(x) (x→∞) 求极限C(n:m) 组合数,n中取m P(n:m) 排列数m|n m整除n (m,n)=1 m与n互质 a ∈A a归属集合A Card(A) 集合A中的元素个数为了方便,也做些约定!x的平方,可以打成x^2 (其它的以资类推)x+1的开方,可以打成√(x+1),记住加括号;x分之一,可以输入1xx;要是是x+1分之一,请输入1x(x+1),分子、分母请加括号<> 或者>< 表示不等于例:a<>b 即a不等于b;<= 表示小于等于(半大于)例:a<=b 即a半大于b;>= 表示大于等于(不小于)例:a>=b 即a不小于b;表示乘方例:a^b 即a的b次方, 也可用于开根号,例:a^(1x2) 表示a的平方根* 表示乘x 表示浮点除例:3x2=1x5 \ 表示整除例:3\2=1……1()广义括号,允许多重嵌套,无大、中、小之分,优先级无上 字符串处理函数大全 bcmp(比较内存内容)相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp 表头文件;include Word查找栏代码·通配符一览表 注:要查找已被定义为通配符的字符,该字符前键入反斜杠\ 。查找?、*、(、)、[ 、] 等的代码分别是\?、\*、\(、\)、\[、\] 。 Word替换栏代码·通配符一览表 Word通配符用法详解 1、任意单个字符: “?”可以代表任意单个字符,输入几个“?”就代表几个未知字符。如: 输入“? 国”就可以找到诸如“中国”、“美国”、“英国”等字符; 输入“???国”可以找到“孟加拉国”等字符。 2、任意多个字符: “*”可以代表任意多个字符。如: 输入“*国”就可以找到“中国”、“美国”、“孟加拉国”等字符。 3、指定字符之一: “[]”框内的字符可以是指定要查找的字符之一,如: 输入“[中美]国”就可以找到“中国”、“美国”。又如: 输入“th[iu]g”,就可查找到“thigh”和“thug”。 输入“[学硕博]士”,查找到的将会是学士、士、硕士、博士。 输入“[大中小]学”可以查找到“大学”、“中学”或“小学”,但不查找“求学”、“开学”等。 输入“[高矮]个”的话,Word查找工具就可以找到“高个”、“矮个”等内容。 4、指定范围内的任意单个字符: “[x-x]”可以指定某一范围内的任意单个字符,如: 输入“[a-e]ay”就可以找到“bay”、“day”等字符,要注意的是指定范围内的字符必须用升序。用升序。如: 输入“[a-c]mend”的话,Word查找工具就可以找到“amend”、“bmend”、“cmend”等字符内容。 5、排除指定范、排除指定范围内的任意单个字符: “[!x-x]”可以用来排除指定范围内的任意单个字符,如: 输入“[!c-f]”就可以找到“bay”、“gay”、“lay”等字符,但是不等字符,但是不会找到“cay”、“day”等字符。要注意范围必须用升序。 MySQL中的字符串模式匹配 本文关键字:MySQL 字符串模式匹配 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep 和sed的扩展正则表达式模式匹配的格式。 标准的SQL模式匹配 SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。 例如,在表pet中,为了找出以“b”开头的名字: +--------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +--------+--------+---------+------+------------+------------+ | Buffy | Harold | dog | f | 1989-05-13 | NULL | | Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 | +--------+--------+---------+------+------------+------------+ 为了找出以“fy”结尾的名字: +--------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | death | +--------+--------+---------+------+------------+-------+ | Fluffy | Harold | cat | f | 1993-02-04 | NULL | | Buffy | Harold | dog | f | 1989-05-13 | NULL | +--------+--------+---------+------+------------+-------+ 为了找出包含一个“w”的名字: +----------+-------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +----------+-------+---------+------+------------+------------+ VB常用字符串操作函数2009/11/25 18:321. ASC(X,Chr(X:转换字符字符码[格式]: P=Asc(X 返回字符串X的第一个字符的字符码 P=Chr(X 返回字符码等于X的字符 [范例]:(1P=Chr(65 ‘ 输出字符A,因为A的ASCII码等于65 (2P=Asc(“A” ‘ 输出65 2. Len(X:计算字符串X的长度 [格式]: P=Len(X [说明]:空字符串长度为0,空格符也算一个字符,一个中文字虽然占用2 Bytes,但也算 一个字符。 [范例]: (1 令X=”” (空字符串 Len(X 输出结果为0 (2 令X=”abcd” Len(X 输出结果为4 (3 令X=”VB教程” Len(X 输出结果为4 3. Mid(X函数:读取字符串X中间的字符 [格式]: P=Mid(X,n 由X的第n个字符读起,读取后面的所有字符。 P=Mid(X,n,m 由X的第n个字符读起,读取后面的m个字符。 [范例]: (1 X=”abcdefg” P=Mid(X,5 结果为:P=”efg” (2 X=”abcdefg” P=Mid(X,2,4 结果为 P=”bcde” 4. R eplace: 将字符串中的某些特定字符串替换为其他字符串 [格式]: P=Replace(X,S,R [说明]:将字符串X中的字符串S替换为字符串R,然后返回。[范例]:X=”VB is very good” P=Replace(X,good,nice 输出结果为:P=”VB is very nice” 5. StrReverse:反转字符串 [格式]: P=StrReverse(X [说明]:返回X参数反转后的字符串 [范例]:(1)X=”abc” P=StrReverse(X 输出结果:P=”cba” 6. Ucase(X,Lcase(X:转换英文字母的大小写 [格式]:P=Lcase(X ‘ 将X字符串中的大写字母转换成小写P=Ucase(X ‘ 将X字符串中的小写字母转换成大写 [说明]:除了英文字母外,其他字符或中文字都不会受到影响。 [范例]:(1)令X=”VB and VC” 则Lcase(X的结果为”vb and vc”,Ucase(X的结果为”VB AND VC” 7. InStr函数:寻找字符串 [格式]: P=InStr(X,Y 从X第一个字符起找出Y出现的位置 P=InStr(n,X,Y 从X第n个字符起找出Y出现的位置 [说明]:(1)若在X中找到Y,则返回值是Y第一个字符出现在X中的位置。(2) InStr(X,Y相当于 InStr(1,X,Y。(3)若字符串长度,或X为空字符串,或在X中找不到Y,则都 返回0。(4)若Y为空字符串,则返回0。 ---------------------------------------------------------------------------------------------- mid(字符串,从第几个开始,长度 ByRef 在[字符串]中[从第几个开始]取出[长度个字符串] 例如 mid("小欣无敌",1,3 则返回 "小欣无" instr(从第几个开始,字符串1,字符串2 ByVal 从规定的位置开始查找,返回字符 ?特殊符号:?????Θ???¤?㈱@の???????? ???????? ? ? ? ? ? ? ? ? ??????? ? 回? 』? ′?″?↘↙????‖$ @ * & # ? 卍卐?Φ §? ? ? * ????????????? ? ?? ? ??? ?????????????????????? ?标点符号:.。,、;:?!íì¨`~ ?~‖?"'`|?… —~ - 〃‘’“”??【】々〆〇〈〉《》「〒〓」『()[]{}︻︼﹄﹃ ?数学符号:+-??﹢﹣a/=?※ ? ? ? ? ?﹤﹥? ? ? =? ? <>? ? ? ? ? ? ? ? ?  ̄ ? ? ? ? ‵ ? ? ? ? ※ ? ? ??? ??%? ?单位符号:???????????℡ %? ? ℉ ???$?¥?? ?℅ ?数字序号:? ? ? ? ? ? ? ? ? ? ㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ⒗ ⒘ ⒙ ⒚ ⒛ ‥ … ? ? ? ? ? ? ‰ ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ?希腊字母:ΑΒΓΓΔΕΖΘΗΚΛΜΝΞΟΠΡ?ΣΤΦΥΦΧ αβγδεδλμνπξζεζηθικηυθχψω ?俄语字符:АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ абвгде?жзийклмнопрстуфхцчшщъыьэюя ?汉语拼音:o ? ? - à μ ? ′ ? ° ? ˉ ? 3 ? 2 á ? ? · ? ? è é 1 ± ê ? ? ? ?????ーヽヾ??????ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛ ?中文字符: 偏旁部首:横起:夬丅乛竖起:丄丩乚撇起:夊亅亇厃?捺起:丂 零壹贰叁肆伍陆柒捌玖拾佰仟万亿吉太拍艾分厘毫微卍卐卄巜弍弎弐朤氺曱甴囍兀?〆の〔?????? 字符串处理 1.常见的字符串操作的三种类型 (1)提取和删除字符串 这类处理是取出一个字符串中若干个字符串,基本的方法是:确定需要提取子串的开始位置以及子串的长度。如果题目没有明确给出子串的开始位置及长度的信息,那么可以使用pos函数找出子串前后两个空格的位置,从而确定相关信息。 提取子串:用copy函数将子串提取出来。删除子串:用delete过程直接将子串删除。 (2)字符转换 这类处理是将字符对应的ASCII码按规律进行运算,使该字符转换成另一个字符。我们可以使用ord函数求出某一字符的ASCII码,用chr函数将ASCII码转换成字符。 (3)数值与字符转换 在处理位数很多数值很大的数时,可能超过了整数和实数所能表示的最大范围,在这种情况下,只能采用字符串进行处理。可以使用str过程将数值类型的数据转换成字符串类型,使用val过程可将字符串型数据转换成数值类型。 2.字符串处理的注意事项 (1)读入字串长度如果超过255,则要用字符数组保存字符串。 (2)在分析程序的算法效率时,要注意考虑字符串处理的函数和过程的运行时间。 (3)读数据时,不确定字符行数和每行的字符个数时,可用行结束标记eoln和文件结束 标记eof来读数据。 3.常见的字符串过程和函数 (1)length(s)函数,求字符串s的长度。 (2)copy(s,w,k)函数,在字符串s中从w开始截取长度为k的子串。 (3)val(s,k,code)过程,将字符串s转为数值,存在k中,code返回出错的首位置。 (4)str(i,s)过程,将数值i转为字符串s。 (5)delete(s,w,k)过程,在s中删除从第w位开始的k个字符。 (6)insert(s1, s, w)过程,将s1插到s中第w位。 (7)pos(c, s)函数,求字符c在s中的起始位置。 (8)连接号“+”,将两个字符串连接起来。 (9)upcase(ch)过程,将字母ch转换成大写字母。 C# string类应用 判断是否包含子串 想要判断一个字符串中是否包含某个子串,可以用Contains方法来实现: public bool Contains (string value) 参数value为待判定的子串。如果包含,返回true;否则返回false。下面的代码判断“Hello”中是否包含两个子串。 1.bool b1 = strA.Contains("ll"); //true 2.Bool b1=strA.Contains("MM"); //false 4.1.4 定位字符和子串 定位子串是指在一个字符串中寻找其中包含的子串或者某个字符。在String类中,常用的定位子串和字符的方法包括IndexOf/LastIndexOf及IndexOfAny/LastIndexOfAny,下面进行详细介绍。 1.IndexOf/LastIndexOf IndexOf方法用于搜索在一个字符串中,某个特定的字符或者子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。常用的重载形式如下所示。 (1)定位字符 int IndexOf(char value) int IndexOf(char value, int startIndex) int IndexOf(char value, int startIndex, int count) (2)定位子串: int IndexOf(string value) int IndexOf(string value, int startIndex) int IndexOf(string value, int startIndex, int count) 在上述重载形式中,其参数含义如下: value:待定位的字符或者子串。 startIndex:在总串中开始搜索的其实位置。 count:在总串中从起始位置开始搜索的字符数。 下面的代码在“Hello”中寻找字符…l?第一次出现的位置。 代码4-7 使用IndexOf寻找字符第一次出现位置:Default.aspx.cs 1. String s=”Hello”; 2. int I = s.IndexOf(…l?)); //2 同IndexOf类似,LastIndexOf用于搜索在一个字符串中,某个特定的字符或者子串最后一次出现的位置,其方法定义和返回值都与IndexOf相同,不再赘述。 2.IndexOfAny/LastIndexOfAny IndexOfAny方法功能同IndexOf类似,区别在于,它可以搜索在一个字符串中,出现在一个字符数组中的任意字符第一次出现的位置。同样,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符或子串,则返回-1。常用的IndexOfAny 重载形式有3种: 个人觉得这篇文章是网上的介绍有关KMP算法更让人容易理解的文章了,确实说得很“详细”,耐心地把它看完肯定会有所收获的~~,另外有关模式函数值next[i]确实有很多版本啊,在另外一些面向对象的算法描述书中也有失效函数f(j)的说法,其实是一个意思,即next[j]=f(j-1)+1,不过还是next[j]这种表示法好理解啊: KMP字符串模式匹配详解 KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。 一.简单匹配算法 先来看一个简单匹配算法的函数: int Index_BF ( char S [ ], char T [ ], int pos ) { /* 若串S 中从第pos(S 的下标0≤pos sstrstr与strchar用法 原型:extern char *strstr(char *haystack, char *needle); 用法:#include 字符串的模式匹配算法
C字符串处理函数全
字符串处理
Authorware 特殊字符的使用
java 字符串常用函数及其用法
Linux Shell特殊字符和控制字符大全
字符串匹配算法总结
各种字符串处理函数示例(基本)
特殊符号大全
字符串处理函数大全
Word查找和替换通配符(完全版)
MySQL中的字符串模式匹配.
VB常用字符串操作函数解读
特殊符号)
字符串处理
字符串处理常用方法
KMP字符串模式匹配算法解释
acm常用字符串处理函数