2017-05-28 80 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); 
}