字符串翻转

字符串翻转,第1张

你的题目要求有二义性:

1.整个字符串反转,即abc转换成cba,程序如下:

//---------------------------------------------------------------------------

#include <stdio.h>

void nz(char *a,char *b)

{

int i=0,j

while (*(a+i)!='\0')

i++

*(b+i)='\0'

i--

for (j=0j<=ij++) {

*(b+j)=*(a+i-j)

}

}

int main(void)

{

char a[]="i am a student",b[20]

fz(a,b)

puts(b)

return 0

}

//---------------------------------------------------------------------------

2.

单词顺序转换,即“i am a student”转换为“student a am i” :

//---------------------------------------------------------------------------

#include <stdio.h>

int main(void)

{

char *a="i am a student",b[30]

int i=0,j=0,p

while (a[i]!='\0') i++

for (i--i>=0i--) {

if (a[i]==32) {

p=i+1

while (a[p]!=32&&a[p]!='\0')

b[j++]=a[p++]

b[j++]=i==0?'\0':32

}

else if (i==0) {

p=i

while (a[p]!=32&&a[p]!='\0')

b[j++]=a[p++]

b[j++]=i==0?'\0':32

}

}

puts(b)

return 0

}

//---------------------------------------------------------------------------

代码如下,你在Text1中输入原字符串后按Command1按钮Text2中就出现与原字符串逆序的字符串:

Dim

Str

as

String

Private

Sub

Command1_Click()

Str

=

Text1

Text2

=

StrReverse(Str)

End

Sub

先说说一下吧:

strrev:这是php原生的翻转函数,但是只能针对于单字节字符组成的字符串进行翻转,比如:abc123,可以使用它翻转成123cba;

对于多字节反转:strrev是不支持的,很明显,我认为这是官方设计上的一种不合理,看官网也没有任何说明;那么我们怎么自己实现包含多字节的字符串翻转呢?我收集了两种办法:

一是使用正则//u这个正则匹配所有unicode字符串,二是使用mb_substr函数

方法一:

$str="学海无涯abc你好世界123"

print_r(join(

"",

array_reverse(preg_split("//u",$str))

))

方法二:

$str = "学海无涯abc你好世界123"

$len = mb_strlen($str,"utf8")

$restr = ""

for($i=$len-1$i>=0$i--){

$restr .=mb_substr($str,$i,1,"utf8")

}

echo $restr

附:如果以上程序不能允许,自己手敲一遍,这个编辑器会有些特殊字符导致程序没法允许。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11527100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存