2017-05-28 77 views
0

我想從指定的字符串開頭刪除Word TestLeaf字符串的一部分而已,不是從另一個側面,所以串Test_AA_234_6874_Test應該AA_234_6874_Test,但是當我使用.Replace將來自世界各地的替換詞Test我不want.How做 這是代碼我已經做到了如何刪除

string st = "Test_AA_234_6874_Test"; 
st = st.Replace("Test_",""); 
+0

'的string.join( 「」,st.Skip(5))'僅供參考,表現不佳。子串是要走的路。 – Karolis

回答

4

你可以使用正則表達式來做到這一點。正則表達式的第三個參數replace method具體說明您要替換多少次。

string st = "Test_AA_234_6874_Test"; 
var regex = new Regex("(Test|Leaf)_"); 
var value = regex.Replace(st, "", 1); 

或者如果字符串只替換髮生在剛開始使用^它斷言字符串的開始位置。

string st = "Test_AA_234_6874_Test"; 
var regex = new Regex("^(Test|Leaf)_"); 
var value = regex.Replace(st, ""); 

如果你知道你永諾必須刪除第5個字母,你也可以使用Substring這是更好的性能。

string st = "Test_AA_234_6874_Test"; 
var value = st.Substring(5, st.Length - 5); 
1

考慮檢查字符串是以「開始」開始還是以「修剪」結尾並決定您想要維護的結束位置和開始位置。然後使用Substring方法只獲取你需要的部分。

public string Normalize(string input, string prefix, string suffix) 
{ 
    // Validation 
    int length = input.Length; 
    int startIndex = 0; 
    if(input.StartsWith(prefix)) 
    { 
     startIndex = prefix.Length; 
     length -= prefix.Length; 
    } 

    if (input.EndsWith (suffix)) 
    { 
     length -= suffix.Length; 
    } 

    return input.Substring(startIndex, length); 
} 

希望這會有所幫助。

1

最簡單的方法是使用像這樣的正則表達式。

using System; 
using System.Text.RegularExpressions; 
using System.Text; 

namespace RegExTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var input = "Test_AA_234_6874_Test"; 
      var matchText = "Test"; 
      var replacement = String.Empty; 

      var regex = new Regex("^" + matchText); 

      var output = regex.Replace(input, replacement); 

      Console.WriteLine("Converted String: {0}", output); 

      Console.ReadKey(); 

     } 
    } 
} 

^將匹配字符串開頭的文本。

+1

在_my_中,單詞「簡單」和「正則表達式」(更不用說「表演」)從來沒有匹配過。 –

+0

@UweKeim,也許你還有很多東西要學。 –

1

使用正則表達式。

 var str1 = "Test_AA_234_6874_Test"; 
     var str2 = "Leaf_AA_234_6874_Test"; 

     str1 = Regex.Replace(str1, "^Test", ""); 
     str2 = Regex.Replace(str2, "^Leaf", ""); 

Regex.Replace參數是你輸入的字符串(STR1),你想匹配的模式,以及如何與取代它,在這種情況下一個空格。 ^字符表示查看字符串的開頭,因此類似「MyTest_AAAA_234_6874_Test」的字樣將返回「MyTest_AA_234_6874_Test」。

1
string wordToRemoveFromBeginning = "Test_"; 
int index = st.IndexOf(wordToRemoveFromBeginning); 

string cleanPath = (index < 0) ? st : st.Remove(index, 
    wordToRemoveFromBeginning.Length); 
0

我會使用一些非常簡單的代碼在這裏

string str = "Test_AA_234_6874_Test"; 
string substring = str.Substring(0, 4); 
if (substring == "Test" || substring == "Leaf") 
{ 
    str= str.Remove(0, 5); 
}