javascript使用split时如何能保留分隔符? 如题,我想通过split("/\.\,/")来分隔句子,把分隔的单位处理完后还要组在一起返回,但是分割后的字符串是不包含原句中的符号的,如:how,are.you,切分完后为[how,are,you],进行一些处理后,比如每个都上s就变成了[hows,ares,yous],但是现在我要把它还原的话因为没有了开始的符号了。请问各位有什么更好的办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样子的话就不要用split了,用了更麻烦~~你有多个标志位,又不能一竿子打死,全加,或者全加.这种情况,你还是用indexOf来判断该字符串中,或者.在什么位置,然后在该位置前动态插入你要加的字符,这种做法就是直接根据标志位去插入,改变原字符串。又不需要去记住老的标志位是什么 用indexof有个问题是里面的参数不能使用正则表达式,而我有多个需要切分的标记,比如“,.”,这个时候用indexof找不到 可以采用二维数组存储<script>var str = "how,are.you";var arr = str.split(",");for(var i=0;i<arr.length;i++){arr[i] = arr[i].split(".");}alert(arr);//how,are,you//这里是二维数组[how,[are,you]]for(var i=0;i<arr.length;i++){arr[i] = arr[i].join(".");}alert(arr.join(","));how,are.you</script> split时候用的正则是动态变化的,也就是说你切割的标志位是动态变化且不止一个,而split这个方法是直接根据正则将字符串切割成了数组,除非你自己去实现一个split,否则你根本记录不下,在该字符串中,什么位置被什么切割字符切割开了,这个信息获得不到,你想根据数组重组数据,不可能的~ 楼主加点分~~看看这是不是你想要的<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <script type="text/javascript">var str = "how,are.you";//原字符串 var reg=/\.|\,/g;//正则表达式//alert(str.split(reg).length);//alert(str.match(reg).length);//记录每个标志位的字符到底是什么var strFlag = [];for(var i=0;i<str.match(reg).length;i++){ strFlag[i]=str.match(reg)[i];}alert("变更前的字符串:"+str);//开始切割var strArray=str.split(reg);for(var i=0;i<strArray.length;i++){ strArray[i]+="s";}//将数组还原var strNew="";for(var i=0;i<strArray.length;i++){ if(strFlag[i]!=null) { strNew += strArray[i]+strFlag[i]; } else { strNew += strArray[i]; } }alert("变更后的字符串:"+strNew); </script> </BODY></HTML> 帮帮忙! 请问firebug中下面显示的错误如何解决 急~~~~~~~javascript能直接验证 声音与视频的大小吗? 对象名修改控件 js跨域怎样解决:window.parent.func()怎样实现跨域? $ 这个符号在js中代表什么意思? 现在javascript还流行吗?现在有没有必要学? 请问大家有没有办法在不分祯的情况下只打印出页面的某一上区域? @@@@@@@@@@@ 控件,挡住了部份HTML该怎么办??? 这是我很关键的一步 Javascript 关于一个innerHTML onload的问题 关于框架页面跳转问题
这种情况,你还是用indexOf来判断该字符串中,或者.在什么位置,然后在该位置前动态插入你要加的字符,这种做法就是直接根据标志位去插入,改变原字符串。又不需要去记住老的标志位是什么
var str = "how,are.you";
var arr = str.split(",");
for(var i=0;i<arr.length;i++){
arr[i] = arr[i].split(".");
}
alert(arr);//how,are,you
//这里是二维数组[how,[are,you]]for(var i=0;i<arr.length;i++){
arr[i] = arr[i].join(".");
}
alert(arr.join(","));how,are.you
</script>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD> <BODY>
<script type="text/javascript">var str = "how,are.you";//原字符串
var reg=/\.|\,/g;//正则表达式//alert(str.split(reg).length);
//alert(str.match(reg).length);//记录每个标志位的字符到底是什么
var strFlag = [];
for(var i=0;i<str.match(reg).length;i++)
{
strFlag[i]=str.match(reg)[i];
}alert("变更前的字符串:"+str);//开始切割
var strArray=str.split(reg);
for(var i=0;i<strArray.length;i++)
{
strArray[i]+="s";
}//将数组还原
var strNew="";
for(var i=0;i<strArray.length;i++)
{
if(strFlag[i]!=null)
{
strNew += strArray[i]+strFlag[i];
}
else
{
strNew += strArray[i];
}
}alert("变更后的字符串:"+strNew);
</script>
</BODY>
</HTML>