C((zhi)の奇妙な関数–8.String Remove()とReplace()

4621 ワード

http://www.cnblogs.com/multiplesoftware/archive/2011/09/27/2192710.html
文字列を操作すると、私たちはしばしば削除したり、分子文字列を置換したりします.Remove()とReplace()の二つの関数はこの場合に役に立ちます.
Remove()–分子文字列の一部を削除します.
substringは文字列の一部を返すことができることを知っています.文字列の一部を保留して他の部分を捨てようとする時はsubstringを使ってもいいです.文字列の一部を削除して他の部分を残したい時はRemoveを使います.
Removeには2つのタイプがあります.
  • Remove(int startIndex)
  • は、指定された位置から最後の位置までのすべての文字を削除します.
  • Remove(int startIndex,int length)
  • は、この例の指定された位置から指定された数の文字の削除を開始する.
  • Removeは区域の検査を行います.
    第一の形式に対して
    1.startIndexがゼロ以下または
    2.startIndexで指定された位置はこの文字列内ではない.
    第二の形式に対して
    1.startIndexまたはcountがゼロ以下または
    2.startIndex加算countの和は、この例以外の位置を指定します.
    異常が発生します
     
    Remove()とsubstring()のどちらを選ぶかは簡単です.次の例を見てください.
    string test = "Now is the time for all good men to come to the aid of their country.";

    // 10
    var sliceUsingSubstring = test.Substring(0, 10);

    // 10
    var sliceUsingRemove = test.Remove(10);
    前の10文字を取得したいなら、二つの方法は使えますが、Removeは少し簡潔なようです.開始点を指示する必要がないからです.
    最後の10文字を取得したいなら?
    string test = "Now is the time for all good men to come to the aid of their country.";  
    // length - 10 .
    var sliceUsingSubstring = test.Substring(test.Length - 10);

    // length - 10,
    var sliceUsingRemove = test.Remove(0, test.Length - 10);
    この場合、substringはもっと簡潔に見える.
    今から見れば、彼らは確かに8斤と8両ですが、ネットはこのような状況で2つの方法を提供しています.完全にあなたの好みで使うことができます.
     
    しかし、文字列の中間部分を保持または削除すると、それらの違いが分かります.
    //     10        10    
    var sliceUsingSubstring = test.Substring(10, 10);
    // 20 , 10
    var sliceUsingRemove = test.Remove(20).Remove(0, 10);
     
    この場合、substringは簡単で読みやすく、しかも一回だけの操作が必要であることは明らかです.
     
    しかし、中間の文字列を削除したい場合:
     
    //   0  ,   10   ,     20         
    var sliceUsingSubstring = test.Substring(0, 10) + test.Substring(20);
    // 10 10
    var sliceUsingRemove = test.Remove(10, 10);
     
    この場合に使うと、removeは明らかに簡単で、読みやすいです.
     
    Replace()–差し替えcharまたはString
    この例で指定されたUnicode文字またはStringのすべてのマッチ項目を他の指定のUnicode文字またはStringに置き換えます.
     
    二つの重荷重の形式
     
  • Replace(char oldChar、char newChar)は、この例で指定されたUniode文字のすべてのマッチ項目を他の指定されたUnicode文字に置き換えます.
  •  
    Replace(string oldValue、string newValue)
    この例で指定されたStringのすべてのマッチ項目を他の指定のStringに置き換えます.
     
     
     
    string test="Now is the time for all good men to come to the aid of their country."var politicaliallyCorrect=test.Replace(「men」「people」);var spacestoPipes=test.Replacce(',|')var without The=test.Replace(「the」、string.Empty);
    次の例は、データに「
    」HTMLのコードが含まれている場合、それをEvironment.NewLineに変えたいです.
     
    string test = "Some data &amp; markup was loaded from a data source.<BR/>&nbsp;Oh look, we started a new line!";

    var cleansedData = test.Replace("<BR/>", Environment.NewLine);

    var moreCleansedData = test.Replace("&amp;", "&")
    .Replace("&nbsp;", " ")
    .Replace("<BR/>", Environment.NewLine);
    同時に私はstrigbuilderに対して同じ実験を行いましたが、この場合のstrigbuilderの運行速度は非常に遅いことが分かりました.
     
    var morePerformantCleansedData = new StringBuilder(test)
    .Replace("&amp;", "&")
    .Replace("&nbsp;", " ")
    .Replace("<BR/>", Environment.NewLine)
    .ToString();