delphi 字符串查找替换函数 转
1. 提取字符串中指定子字符串前的字符串
Function Before( Src:string ; S:string ): string ;
Var
F: Word ;
begin
F:= POS(Src,S) ;
if F=0 then
Before := S
else
Before := COPY(S,1,F-1) ;
end ;
eg: Before('123','helloworld_123') 返回结果:helloworld_
2. 提取字符串中指定子字符串后的字符串
function After(Src: string; S: string):string;
var
F: Word;
begin
F:= Pos(Src, S);
if F = 0 then
After:= ''
else
After:= Copy(S, F+Length(Src), Length(S));
end;
3. Delphi 替换函数
procedure Replace(var s:string;const SourceChar:pchar;const RChar:pchar);
//第一个参数是原串,第二个是模式串,第三个是替换串
var
ta,i,j:integer;
m,n,pn,sn:integer;
SLen,SCLen,RCLen:integer;//SLen表示原串的长度,SCLen表示模式传的长度,RCLen表示替换串的长度
IsSame:integer;
newp:array of char;//用来保存替换后的字符数组
begin
SLen:=strlen(pchar(s));SCLen:=strlen(SourceChar);RCLen:=strlen(RChar);
j:=pos(string(SourceChar),s);
s:=s+chr(0);ta:=0;i:=j;
while s[i]<>chr(0) do //这个循环用ta统计模式串在原串中出现的次数
begin
n:=0;IsSame:=1;
for m:=i to i+SCLen-1 do
begin
if m>SLen then begin
IsSame:=0;break;
end;
if s[m]<>sourceChar[n] then begin
IsSame:=0;break;
end;
n:=n+1;
end;
if IsSame=1 then begin
ta:=ta+1;i:=m;
end
else
i:=i+1;
end;
if j>0 then
begin
pn:=0;sn:=1;
setlength(newp,SLen-ta*SCLen+ta*RCLen+1);//分配newp的长度,+1表示后面还有一个#0结束符
while s[sn]<>chr(0) do //主要循环,开始替换
begin
n:=0;IsSame:=1;
for m:=sn to sn+SCLen-1 do //比较子串是否和模式串相同
begin
if m>SLen then begin IsSame:=0;break; end;
if s[m]<>sourceChar[n] then begin IsSame:=0;break; end;
n:=n+1;
end;
if IsSame=1 then//相同
begin
for m:=0 to RCLen-1 do
begin
newp[pn]:=RChar[m];pn:=pn+1;
end;
sn:=sn+SCLen;
end
else
begin //不同
newp[pn]:=s[sn];
pn:=pn+1;sn:=sn+1;
end;
end;
newp[pn]:=#0;
s:=string(newp); //重置s,替换完成!
end;
end;
4. Delphi StringReplace() 替换字符串的用法
str:= '{"UserName":"helloworld","UserPass":"helloworld_123","UserEmail":"lovecode@163.com"}';
str:= StringReplace(str,'"','\"',[rfReplaceAll]);
StringReplace(源字符串,'被替换字符','替换后字符',[rfReplaceAll]);
5. 查找字符串中指定字符及字符串最后一次出现的位置
function RightPosEx(const Substr,S: string): Integer;
var
iPos: Integer;
TmpStr: string;
i,j,len: Integer;
PCharS,PCharSub: PChar;
begin
PCharS:=PChar(s); //将字符串转化为PChar格式
PCharSub:=PChar(Substr);
Result:=0;
len:=length(Substr);
for i:=0 to length(S)-1 do begin
for j:=0 to len-1 do begin
if PCharS[i+j]<>PCharSub[j] then break;
end;
if j=len then Result:=i+1;
end;
end;
调用方式:RightPosEx(‘\’,’123456\7\’);
delphi 字符串查找替换函数 转的更多相关文章
- java中String字符串的替换函数:replace与replaceAll的区别
例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSe ...
- PHP 字符串正则替换函数preg_replace使用说明
1. preg_replace() $msg = preg_replace("/<style>.+<\/style>/is", "", ...
- php字符串常用处理函数(数组的拆分、查找替换)
//字符串常用函数 $a = "hello"; echo strlen($a); //输出字符串的长度 $b = "Hello"; ...
- Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数
dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...
- php中几个字符串替换函数详解
在php中字符替换函数有几个如有:str_replace.substr_replace.preg_replace.preg_split.str_split等函数,下面我来给大家总结介绍介绍. 一.st ...
- JavaScript字符串插入、删除、替换函数
JavaScript字符串插入.删除.替换函数 说明: 以下函数中前两个函数取出查找字符串的前一部分和后一部分,以用于其他函数.注意,调用一次 replaceString(mainStr,search ...
- delphi字符串函数大全
转帖:delphi字符串函数大全 2009-11-17 16:43:55 分类: delphi字符串函数大全 ━━━━━━━━━━━━━━━━━━━━━首部 function StringToGUID ...
- Delphi字符串处理函数
1.Copy 功能说明:该函数用于从字符串中复制指定范围中的字符.该函数有3个参数.第一个参数是数据源(即被复制的字符串),第二个参数是从字符串某一处开始复制,第三个参数是要复制字符串的长度(即个数) ...
- string类自定义字符串替换函数replace
#include <iostream> #include <string> using namespace std; /* * 函数功能:将string字符串中的某些字符替换 ...
随机推荐
- HDU 2546 饭卡 01背包变形
题目大意:中文题就不多说了 题目思路:由题意可知,只要高于5元,就可以随便刷,那我们就把最贵的留在最后刷.但是如果低于5元就什么也不能刷(哪怕你要买的物品价格不足五元),所以我们可以先求出(n-5)元 ...
- (转)Eclipse中使用Ant
Eclipse中使用Ant 分类: JAVA 工具 服务器2014-08-05 09:59 5507人阅读 评论(0) 收藏 举报 anteclipse http://286.iteye.com/bl ...
- docker k8s 1.3.8 + flannel
docker k8s + flannel kubernetes 是谷歌开源的 docker 集群管理解决方案. 项目地址: http://kubernetes.io/ 测试环境: node-1: 10 ...
- jetty compile
lifecycle cant been covered, 需要m2e-extra,在elcipse marcketplace找,不是叫做这个名. <parent>上有lifecycle问题 ...
- Ubuntu Server 14.04 & Apache2.4 虚拟主机、模块重写、隐藏入口文件配置
环境: Ubuntu Server 14.04 , Apache2.4 一.Apache2.4 虚拟主机配置 01. 新建一份配置文件 在apache2.4中,虚拟主机的目录是通过/etc/apach ...
- Apache 隐藏入口文件 index.php
新建 .htaccess文件至站点目录下,并写入如下代码: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQ ...
- Struts1、2种如何防止表单重复提交和两者的区别
使用token指令牌就行了.在进入标签之前的action中通过saveToken方法保存指令牌.在表单提交后的action中判断这个token是否存在,如果存在允许插入,并通过resetToken把t ...
- Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeExcep
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- PHP获取当期前运行文件的路径,名字,服务器路径
<?phpecho "显示脚本文件的相对路径和文件名:\"".$_SERVER["PHP_SELF"]."\"<br& ...
- Quick Cocos2dx 场景对象基类实现
从使用Quick-Cocos2d-x搭建一个横版过关游戏(四)拷来个进度条类, 但是由于那个类有个bug,在setProgress里面self.fill是找不到的,所以我改进了一下,代码如下: loc ...