日期:2014-05-16  浏览次数:20323 次

通过javascripts取字符串?
我有一字符传
large_aa.gif#small_aa.gif#large_bb.gif#small_cc.gif#large_cc.gif#large_dd.gpg#small_dd.gif
#small_ee.gif
我需要通过jsp将字符串晒选,最终得到
small_aa.gif#large_bb.gif_s#small_cc.gif#smal_dd.gif这样一个字符串

解释,主要看aa、bb、cc等这样的名字。有large也有small的就只留下small的(如

large_aa.gif#small_aa.gif,只留small_aa.gif)只有large而没有small的就把large的留下(如

large_bb.gif,没有small只好留下large),没有large而只有small的也要不会留下small(如

small_ee.gif也不会被留下)。

请给出程序代码,小弟初学。在线急等,谢谢

------解决方案--------------------
如果扩展名都是一样的,或者不在乎扩展名的话~

<script type= "text/javascript ">
var str = "large_aa.gif#small_aa.gif#large_bb.gif#small_cc.gif#large_cc.gif#large_dd.gpg#small_dd.gif#small_ee.gif ";

var arr = str.split( "# ");
var arrTemp = new Array();
var arrResult = new Array();
var sign = false;
var index = 0;
for (var i = 0; i < arr.length; i++)
{
arrTemp[i] = arr[i].substr(0, arr[i].indexOf( ". "));//截取文件名
}
for (var i = 0; i < arrTemp.length; i++)
{
sign = false;
for (var j = i+1; j < arrTemp.length; j++)
{
//判断_后的部分是否相同
if ( arrTemp[i].substr(arrTemp[i].indexOf( "_ ")) == arrTemp[j].substr(arrTemp[j].indexOf( "_ ")) )
{
//既有large也有small,留下small
if (arrTemp[i].substr(0, arrTemp[i].indexOf( "_ ")) == "small ")
{
arrResult[index] = arr[i];
}
else
{
arrResult[index] = arr[j];
}
index++;
sign = true;
break;
}
}
if (!sign)//只有large或只有small
{
//判断是否已经记录
for (var j = 0; j < arrResult.length; j++)
{
if (arr[i] == arrResult[j])
{
sign = true;
}
}
if (!sign)
{
//尚未记录,留下large
if (arrTemp[i].substr(0, arrTemp[i].indexOf( "_ ")) == "large ")
{
arrResult[index] = arr[i];
index++;
}
}
}
}
var result = arrResult.join( "# ");

alert(result);
</script>