【问题标题】:String.Remove doesn't work [duplicate]String.Remove 不起作用[重复]
【发布时间】:2013-12-06 17:48:08
【问题描述】:

我有这样的代码,但无法理解错误在哪里,尽管事实上这段代码很简单。所以q是一个完整的路径,我需要得到Gen_ParamFile所需的路径

string q = @"C:\ProgramData\RadiolocationQ\script-Data=12^6-12^33.xml";
string _directoryName1 = @"C:\ProgramData\RadiolocationQ";
int Length = _directoryName1.Length + "ascript".Length; 

 string Gen_ParamFile = q;
 Gen_ParamFile.Remove(0, Length); // this line don't  do anything

var Gen_Parfile = Path.Combine(_directoryName1, "GeneralParam-Data" + Gen_ParamFile);

我使用了这里所说的函数http://msdn.microsoft.com/ru-ru/library/9ad138yc(v=vs.110).aspx

【问题讨论】:

    标签: c#


    【解决方案1】:

    确实如此,它只是不会影响实际的字符串,结果会创建一个新字符串。使用:

    Gen_ParamFile = Gen_ParamFile.Remove(0, Length);
    

    【讨论】:

    • 明白了,觉得自己像个白痴)
    【解决方案2】:

    因为String.Remove 方法返回一个新字符串。它不会改变原来的。

    返回一个新字符串,其中包含指定数量的字符 从指定位置开始的当前实例已被删除。

    记住,字符串是immutable types。你不能改变它们。即使你认为你改变了它们,你实际上也创建了新的字符串对象。

    你可以给自己赋值;

    Gen_ParamFile = Gen_ParamFile.Remove(0, Length);
    

    作为替代方案,您可以使用String.SubString 之类的方法;

    Gen_ParamFile = Gen_ParamFile.SubString(Length);
    

    【讨论】:

      【解决方案3】:

      你可以像这样使用

      Gen_ParamFile = Gen_ParamFile.Remove(0, Length);

      除此之外你还可以使用

      String.Substring 方法根据您的要求

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        • 2018-01-04
        • 2013-08-11
        • 2017-07-19
        • 2015-07-04
        • 2012-10-26
        • 2013-01-17
        相关资源
        最近更新 更多