分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
如:要查找字符串中的某一个或几个字符,语句该怎么写
再如: 想知道字符串中首部或尾部的字符是不是‘>’,这样语句又该怎么写?
各位高手帮帮忙!
解析:
使用pos函数来查找字符第一次出现的位置
pos(要查找的字符串,在字符串中查找)
var
str1:string;
i,j:integer;
begin
str1:='dsf4654f6<ds>ad' ;
j:=pos('<',str1);在字符串str1中查找"<"
if j<>0 then 得到的j是字符串中出现的位置,是整型
showmessage('<'+'在第'+inttostr(j)+'个位置');
end;
var
{s:ansistring;}
s,ss:string;
w:array[0100] of string[30];
c:array[01000] of char;
i,j,k,m,n:integer;
begin
s:='abc def ghi 8678, jklmn ';
{ 文本s中包括英文大小写字母、英文标点、数字和空格,并以星号""结束 }
n:=length(s);
for i:=1 to n do c[i]:=s[i];
{以上3行为模拟输入,将串s的内容转换到字符数组c中}
ss:='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
c[0]:=' ';
k:=0;
for i:=1 to 1000 do
if c[i]='' then begin n:=i; break; end;
{确定输入字符个数n}
for i:=1 to n do
if pos(c[i],ss)>0 then begin m:=i; break; end;
{确定第一个单词的第一个字符位置m}
for i:=m to n do begin
if (pos(c[i],ss)=0)and(pos(c[i-1],ss)>0)
then begin inc(k); w[k]:=''; end
else if pos(c[i],ss)<>0 then w[k]:=w[k]+c[i];
{只有当前字母为非英文字母且前一个字母为英文字母时,单词数加一}
end;
writeln(k);
for i:=0 to k-1 do writeln(w[i]);
end
解决这个问题有两种办法:
1、用正则表达式,标记出所有数字,然后取出。
//正则对象
var
uChecker: TRegExpr;
//创建正则,并装载匹配规则。
uChecker:= TRegExprCreate;
uCheckerExpression:= '\d[\\d]';
if uCheckerExec(r_Name) then
sStr:= uCheckerMatchPos[1]; //匹配结果
2、用字符串替换函数将所有字母替换
procedure TForm1Button1Click(Sender: TObject);
const
c_Str = 'abc423sdfbc'; //这常量是你要处理的字符串,可以自行修改
var
i: Integer;
sStr: string;
begin
//将所有字母替换为空
for i := ord('A') to ord('Z') do
sStr:= StringReplace(c_Str, Char(i), '', [rfReplaceAll]);
for i := ord('a') to ord('z') do
sStr:= StringReplace(sStr, Char(i), '', [rfReplaceAll]);
ShowMessage(Format('字符串%s处理后为:%s', [c_Str, sStr]));
end;
自己选择吧。PS:下面这个帖子的分你还没给呢。
>
以上就是关于在Delphi中,怎么查找字符串全部的内容,包括:在Delphi中,怎么查找字符串、delphi 怎么判断字符串里有几个英文单词、delphi 取出一段字符串的整数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)