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
附:如果以上程序不能允许,自己手敲一遍,这个编辑器会有些特殊字符导致程序没法允许。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)