先说下我的目的:  string str1 = "C:\abb\cc\test.txt"
   我想把这个字符串改为 string str2 = "C:\abb\cc\test.exe"
   也就是后缀名变了一下。我现在用的办法是  str1.Remove((str1.length - 4),4) ,这样就得到一个裸的地址,然后再 str2 = str1 +".exe "; 就能达到我的目的。
但是很奇怪,Remove过后,我把str1用一个label.Text来显示,它居然没有变化。不知道怎么回事。还有什么方便的办法达到我的目的吗?谢!!!!

解决方案 »

  1.   

    string[] str2 = str1.split('.');
    str1=str2[0]+"exe";方法还有很多很多
      

  2.   


    str1.Remove((str1.length - 4),4) 对str1没影响.
    应该 str1=str1.Remove((str1.length - 4),4) + ".exe" ;
      

  3.   

    str1= str1.Remove((str1.length - 4),4) ; 才会改变str1
      

  4.   

    StringBuilder str1 = new StringBuilder(@"C:\abb\cc\test.txt");
    str1.Remove(str1.Length-4, 4);
    //结果:C:\abb\cc\test
      

  5.   

    str1.Remove((str1.length - 4),4)这样返回的是被截取之后的字符串,除非你str1=str1.Remove((str1.length - 4),4);str1才会改变if(str1.IndexOf("txt") == str1.Length - 4)
    {
        str1 = str1.Replace("txt","exe");
    }
      

  6.   

    这样更好
    string path =Path.GetFileNameWithoutExtension("C:\abb\cc\test.txt");
    然后直接在后边加个path + ".exe" ok了
      

  7.   

    错了,应该是
    string fileName =Path.GetFileNameWithoutExtension(@"C:\abb\cc\test.txt"); 
    string path = Path.GetDirectoryName(@"C:\abb\cc\test.txt");
    然后3个组合
    string str = fileName + path + “.exe”
      

  8.   

    谢谢啊!刚才也看到有人用split,还是你的代码简洁清晰!一下子就明白了!
      

  9.   


    谢谢!C#也是大神啊
    刚从MATLAB转过来,还有很多不懂。多谢大家