t_1_____e1_t_est
或者更具体的算法
t_1__(_1_)__e1(_1_)t_est 没看明白

解决方案 »

  1.   

    正则表达式呀
    把除了“\”的字符全换成“_1_”或者“(_1_)”外
    其他所有路径里包含有符号的都换成“_”
    但是还要排除像D:\web\和.asp这样的字符
      

  2.   

    额....
    有那么难么?
    我就是想先把一个物理路径里的"\"改成"(_1_)"和文件名后面如果含有"."的后缀都排除.
    然后再将文件夹和文件会出现的所有非英文和数字的符号,用正则全部替换成"_"有多少个字符就换成多少个"_"比如:D:\web\t-1@#\%^e1\t.est.asp
    先将"D:\web\"排除后开始用正则替换成
    t_1__(_1_)__e1(_1_)t_est
      

  3.   


    <script type="text/javascript">
    var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
    alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return a+b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"-")}))function abc(){
    alert('123')
    }
    var a="abc"
    eval(a)()</script>
      

  4.   

    不要D:\web\的<script type="text/javascript">
    var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
    alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"-")}))</script>
      

  5.   

    不对呀?
    结果是:t-1----1----e1--1--t-est还有读取服务器的路径一般不会连续出现两个"\"吧?
    所以D:\\web\\t-1@#\\%^e1\\t.est.asp应该不存在
    D:\web\t_1@#\%^e1\t.est.asp在排除了"D:\web\"和".asp"后
    要先将"\"替换成"(_1_)"
    然后接着把每个非英文和数字的符号都替换成"_"(是替换成下划线哦)
      

  6.   


    <script type="text/javascript">
    var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
    alert(a)//这里看看 ,如果要表示成字符串  他自己回转的
    alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9]/gi,"_")}))//替换我看错了  我是用-来替换的,该下就好了
    </script>
      

  7.   

    还有
    a=Request.ServerVariables("PATH_TRANSLATED")
    读取的是服务器的物理路径,没有"\\"呀,只"\"
      

  8.   


    <script type="text/javascript">
    var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
    alert(a)
    alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9\(\)]/gi,"_")}))
    </script>
    看见了 ,先(_1_)后,再接着把每个非英文和数字的符号都替换成"_"的时候 ,把()也替换了
      

  9.   

    js的字符串会自动把\换成\\的,因为js字符串 要表示\,必须2个\\,看看下面
    <script type="text/javascript">
    var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
    var cc='D:\web\t-1@#\%^e1\t.est.asp'
    alert(cc)
    alert(a)</script>
      

  10.   

    我觉的效果还是不好呢?
    因为如果a='D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp'
    就不把原来的"(_1_)"替换成"__1__"了
    这样会在输出的结果中看不准确原路径了
    举个例子:D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp
    本来文件t.est(_1_).asp就是在D盘的文件夹的文件夹的文件夹下,才三个文件夹
    结果在替换后变成"t_1__(_1_)__e(_1_)1(_1_)t_est(_1_)"
    以为是有5个还是6个文件夹了.所以我想是不是应该排除"D:\web\"和".asp"后
    第二步再替换文件夹和文件里的所有非英文和数字的符号
    最后再将"\\"替换成"(_1_)"会比较好点呢?
      

  11.   


    <script type="text/javascript">
    var a='D:\\web\\t-1@#\\%^e1\\t.est.asp'
    var cc='D:\web\t-1@#\%^e1\t.est.asp'
    alert(cc)
    alert(a)
    alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/\\/g,"(_1_)").replace(/[^a-z0-9\(\)]/gi,"_")}))</script>
      

  12.   


    <script type="text/javascript">
    var a='D:\\web\\t-1@#\\%^e(_1_)1\\t.est(_1_).asp 'alert(a)
    alert(a.replace(/(^[^\\]*?\\[^\\]*?\\)(.*?)\.[^\.]*?$/,function (m,a,b){ return b.replace(/[^a-z0-9\\]/gi,"_").replace(/\\/g,"(_1_)")}))
    </script>
      

  13.   

    非常感谢!~~~
    我先结帖了。
    但是还想提个小小的问题,
    要是前面的"D:\web\"是不固定的,
    比如"D:\www\wwwroot\"或者
    "D:\www\wwwroot\user1\"
    那么条件会怎么变呢?是不是应该要个判断语句呢?一般的服务器都是几类呵~
    希望解答,要是不愿意答,也是很感谢你的,嘿嘿~~~
    再次感谢ing...
      

  14.   

    比如"D:\www\wwwroot\" 会去掉 D:\www\"D:\www\wwwroot\user1\" 会去掉 D:\www\如果想多去掉,要看你的要求,要有规律才可以
      

  15.   

    没有呢,我的意思是可以在其他服务器上调用哈~
    如果其他服务器不是在“D:\web\”目录下的时候
    可以用个if条件语句判断下,一般都是wwwroot和web的嘛?
    我是用asp写的~