首页IT技术编程 › 各种编程语言下字符串分割及foreach遍历对比

各种编程语言下字符串分割及foreach遍历对比

学的编程语言越来越多,各种相似的函数和语法也容易混淆,这里以各种常用的编程语言分割字符串并做遍历来对比。 

 

一、PHP

explode(separator, string [ ,limit ])  

foreach ($arr as $i)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$str "1.2.3.4.5";
$strs1 explode(".",$str); 
foreach ($strs as $i ){
    echo $i."\n";
}
/*
输出结果为
1
2
3
4
5
*/
?>

上述例子中limit参数省略,如果limit设为0则输出结果是1.2.3.4.5,即$str作为数组$strs的一个值

如果limit设为2,则输出结果为:

1

2.3.4.5

如果limit设为-2,则输出结果为:

1

2

3

 

PHP每条语句后面的分号(;)是不能省略的。

 

二、Javascript

string.split(separator [,limit])

for (i in arr)

javascript的limit一般只能是正数

1
2
3
4
5
6
7
<script>
str = "1.2.3.4.5";
strs = str.split(".");
for (i in strs){
    document.write(strs[i]+"<br>");
}
</script>

 

三、Perl

split /pattern/, string [ , limit ] 

foreach $i (@arr)

1
2
3
4
5
$str "1.2.3.4.5";
@strs split(/\./,$str);      #注意反斜杠
foreach $i (@strs) {
    print $i."\n";
}

 Perl的数组是用@表示的

 

四、Python

string.split(separator [ , limit])

for  i  in  arr

1
2
3
4
str = "1.2.3.4.5"
strs = str.split(".")
for in strs:
    print (i)

Python要求严格的对齐 ,并且注意for语句的冒号(:)

 

五、Java:

string.split(separator [,limit] ) 

for ( i : arr )

1
2
3
4
5
String str="1.2.3.4.5";
String[] strs=str.split(".");
for (String i : strs) {  
    System.out.println(i);
}

 

六、Linux shell

for i in ${arr[@]}

在linux shell中,split主要是用于分割文件的,不是用于分割字符串。所以这里使用另一种方法。

下面例子中,变量$IFS存储系统默认分隔符,下例中将其改为“.",并用oldIFS备份默认的分隔符以便恢复默认。

1
2
3
4
5
6
7
8
9
str="1.2.3.4.5"
oldIFS=”$IFS”
IFS="."
strs=($str)
IFS=”$oldIFS”
for in ${strs[@]}
do
echo $i
done

也可以用tr命令来实现:

1
2
3
4
5
6
str="1.2.3.4.5"
strs=($(tr "." " " <<< $str))
for in ${strs[@]}
do
    echo $s
done

注意:Linux赋值时等号两边不能有空格

 

七、Powershell

String.split(seperator [ , limit ] [ , option] )

foreach ( $i in $arr )

option选项比较少用,主要是用于去除空的entry(可以这么用:

$option =System.StringSplitOptions]::RemoveEmptyEntries)

1
2
3
4
5
$str "1.2.3.4.5"
$strs $str.split(".")
foreach ($i in $strs){
    echo $i
}

  Powershell作为一门新的语言,吸收了各家之长,语法上也比较通用。

 

八、windows批处理BAT

for %%i in ("%set%")

1
2
3
4
5
6
7
8
9
10
@echo off
set a=1.2.3.4.5
for /f "delims=. tokens=1-5" %%i in ("%a%") do (
 echo %%i
 echo %%j
 echo %%k
 echo %%l
 echo %%m
)
pause

 bat是比较古老的了,如果用空格等分割则可以比较方便循环,本例中是以“.”分割,批处理无法直接循环

原文出自: http://blog.too2.net/?p=214
转载请注明转自:辛碌力成【http://blog.too2.net】

发表评论