2017-03-09 56 views
-6

我試圖做這樣的:試圖刪除在C#中一些字符串

G0E1X.52Y-.48M3S6000 
H1Z-.2M8 
G1Z.005F20. 
X-6.82F18. 
Y-.04 
X.56 
G0Z.2 

是這樣的:

E2X.52Y-.48 
G1Z.005F20. 
X-6.82F18. 
Y-.04 
X.56 
G0Z.2 

對於所有其他副本我做,數量「E」後會增加1(E3,E4,E5等),而其餘的文字將保持不變。

到目前爲止,我有這個,雖然它的工作,我想知道是否有更好的方式來做到上述。

注意:Preview.Text包含更多文本。但是,在執行下面顯示的代碼後,字符串'DynamicPart'僅包含上面顯示的示例。

  string Part = Preview.Text; 
      int PartStart = Preview.Text.IndexOf("M6"); 
      int PartFinish = Preview.Text.IndexOf("M6", PartStart + 1); 
      int PartLength = PartFinish - PartStart; 
      Part = Preview.Text.Substring(PartStart, PartLength); 
      int PartToolInfo = Part.IndexOf("E1", 0); 
      Part = Part.Remove(0, PartToolInfo + 2); 
      int PartM1 = Part.IndexOf("M"); 
      int PartM2 = Part.IndexOf("M", PartM1 + 1); 
      Part = Part.Remove(PartM1, PartM2 - PartM1 + 2); 
      string DynamicPart = Part; 

      for (int x = 2; x <= Convert.ToInt32(NumberOfParts.Text); x++) 
      { 
       DynamicPart = Part.Insert(0, "E" + x); 
       Preview.Text = Preview.Text.Insert(PartFinish, DynamicPart); 
       PartFinish = Preview.Text.IndexOf("M6", PartStart + 1); 
      } 
+0

這更多的是一種[代碼審查(http://codereview.stackexchange.com/)問題。 SO是針對*不*工作的問題。 – itsme86

+1

@ itsme86是正確的,這是[codereview.se]的問題,因爲您正在尋找開放式的建議來改進已經工作的代碼。 (但是,請注意,「SO用於解決不起作用的問題」是Stack Overflow的[help/on-topic]頁面不支持的語句,相反,此問題不適用於堆棧溢出,因爲存在沒有具體的編程問題需要解決。) –

回答

0

嘗試這樣的事情

using System; 

public class RemoveTest { 
public static void Main() { 

    string name = "Michelle Violet Banks"; 

    Console.WriteLine("The entire name is '{0}'", name); 

    // remove the middle name, identified by finding the spaces in the middle of the name... 
    int foundS1 = name.IndexOf(" "); 
    int foundS2 = name.IndexOf(" ", foundS1 + 1); 

    if (foundS1 != foundS2 && foundS1 >= 0) { 

     name = name.Remove(foundS1 + 1, foundS2 - foundS1); 

     Console.WriteLine("After removing the middle name, we are left with '{0}'", name); 
    } 
    } 
} 
// The example displays the following output: 
//  The entire name is 'Michelle Violet Banks' 
//  After removing the middle name, we are left with 'Michelle Banks'