学的编程语言越来越多,各种相似的函数和语法也容易混淆,这里以各种常用的编程语言分割字符串并做遍历来对比。
一、PHP
explode(separator, string [ ,limit ])
foreach ($arr as $i)
<?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一般只能是正数
<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)
$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
str = "1.2.3.4.5"
strs = str.split(".")
for i in strs:
print (i)
Python要求严格的对齐 ,并且注意for语句的冒号(:)
五、Java:
string.split(separator [,limit] )
for ( i : arr )
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备份默认的分隔符以便恢复默认。
str="1.2.3.4.5" oldIFS=”$IFS” IFS="." strs=($str) IFS=”$oldIFS” for i in ${strs[@]} do echo $i done
也可以用tr命令来实现:
str="1.2.3.4.5" strs=($(tr "." " " <<< $str)) for s in ${strs[@]} do echo $s done
注意:Linux赋值时等号两边不能有空格
七、Powershell
String.split(seperator [ , limit ] [ , option] )
foreach ( $i in $arr )
option选项比较少用,主要是用于去除空的entry(可以这么用:
$option =System.StringSplitOptions]::RemoveEmptyEntries)
$str = "1.2.3.4.5" $strs = $str.split(".") foreach ($i in $strs){ echo $i }
Powershell作为一门新的语言,吸收了各家之长,语法上也比较通用。
八、windows批处理BAT
for %%i in ("%set%")
@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是比较古老的了,如果用空格等分割则可以比较方便循环,本例中是以“.”分割,批处理无法直接循环
转载于:https://blog.51cto.com/orzorz/1693278