<SCRIPT LANGUAGE="JavaScript">
<!--
function format( str )
{
var inNumber = false;
var startPos = false;
var res = [];
for( i=0; i<str.length; i++ )
{
var chr = str.charAt(i);
//在数字里
if( inNumber )
{
for(;;) //处理数字
{
//超出结尾时退出
if( i >= str.length )
break; chr = str.charAt(i);
if( !/^[\d\.]$/.test(chr) ) //不是数字了,跳出循环
{
num = str.substring( startPos, i ); //取得该数字
num = parseFloat(num).toFixed(); //取整
res.push( num ); //加入结果集 //重新计算
startPos = null;
inNumber = false;
i--;
break;
}
else
i++;
}
}
//数字的起点
else if( /^\d$/.test(chr) || chr=="-" )
{
inNumber = true;
startPos = i;
}
//是字母,保留
else if( /^[a-zA-Z]$/.test(chr) )
{
//alert(chr);
res.push( chr );
}
//是分隔符,跳过
else
{
continue;
}
}
return res.join(" ");
}var str = "M3.3,11.7L12.051,58.25c0,0,10.4-26.1,21.1,0.9S22.1,45.7,8.2,29.1S3.3,11.7,3.3,11.7 z";document.write(format(str));
//-->
</SCRIPT>
<!--
function format( str )
{
var inNumber = false;
var startPos = false;
var res = [];
for( i=0; i<str.length; i++ )
{
var chr = str.charAt(i);
//在数字里
if( inNumber )
{
for(;;) //处理数字
{
//超出结尾时退出
if( i >= str.length )
break; chr = str.charAt(i);
if( !/^[\d\.]$/.test(chr) ) //不是数字了,跳出循环
{
num = str.substring( startPos, i ); //取得该数字
num = parseFloat(num).toFixed(); //取整
res.push( num ); //加入结果集 //重新计算
startPos = null;
inNumber = false;
i--;
break;
}
else
i++;
}
}
//数字的起点
else if( /^\d$/.test(chr) || chr=="-" )
{
inNumber = true;
startPos = i;
}
//是字母,保留
else if( /^[a-zA-Z]$/.test(chr) )
{
//alert(chr);
res.push( chr );
}
//是分隔符,跳过
else
{
continue;
}
}
return res.join(" ");
}var str = "M3.3,11.7L12.051,58.25c0,0,10.4-26.1,21.1,0.9S22.1,45.7,8.2,29.1S3.3,11.7,3.3,11.7 z";document.write(format(str));
//-->
</SCRIPT>
修改了一下算法,将取整的部分改成下面的
num = parseInt((parseFloat(num)+0.5)); //取整
这样应该可以了
改成下面的
fix = num.indexOf("-") == -1 ? 0.5 : -0.5;
num = parseInt(parseFloat(num)+ fix); //取整
function initSvgNum(d)
{ var strSvg="",temp="";
var i=d.length;
for(var loop=0;loop<i;loop++)
{
temp=d.charAt(loop);
if(temp==' '||temp==','||temp=='S'||temp=='s'||temp=='C'||temp=='c'||temp=='Z'||temp=='z'||temp=='M'||temp=='m'||temp=='H'||temp=='h'||temp=='V'||temp=='v'||temp=='L'||temp=='l')
// strSvg+=loop+"#";
strSvg+=" "+temp+" ";
else
strSvg+=temp;
}
//去除最后一个空格
i=strSvg.length;
if(strSvg.charAt(i-1)==' ')
strSvg=strSvg.substring(0,i-1);
//去除首个字母符号
if(strSvg.charAt(0)==" ")
strSvg=strSvg.substring(1,strSvg.length);
//把【-】号作为一个单体处理
strSvg=strSvg.replace(/\-/g," -");
//去除【,】,方便分组
strSvg=strSvg.replace(/\,/g,"");
//双空格去除处理
strSvg=strSvg.replace(/\ /g," ");
//去除所有的小数
var str=strSvg.split(" "); var i=str.length; for(var loop=0;loop<i;loop++)
{
if(!isNaN(str[loop]))
{
//是数字
str[loop]=Math.round(str[loop]);
}
}
/*
strSvg="";
//重新组合
for(var loop=0;loop<i;loop++)
{
strSvg+=str[loop]+" ";
}
*/
//结果返回
return str;}