我想从指定的字符串开头删除Word Test
和Leaf
字符串的一部分而已,不是从另一个侧面,所以串Test_AA_234_6874_Test
应该AA_234_6874_Test
,但是当我使用.Replace
将来自世界各地的替换词Test
我不want.How做 这是代码我已经做到了如何删除
string st = "Test_AA_234_6874_Test";
st = st.Replace("Test_","");
我想从指定的字符串开头删除Word Test
和Leaf
字符串的一部分而已,不是从另一个侧面,所以串Test_AA_234_6874_Test
应该AA_234_6874_Test
,但是当我使用.Replace
将来自世界各地的替换词Test
我不want.How做 这是代码我已经做到了如何删除
string st = "Test_AA_234_6874_Test";
st = st.Replace("Test_","");
你可以使用正则表达式来做到这一点。正则表达式的第三个参数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);
考虑检查字符串是以“开始”开始还是以“修剪”结尾并决定您想要维护的结束位置和开始位置。然后使用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);
}
希望这会有所帮助。
最简单的方法是使用像这样的正则表达式。
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();
}
}
}
^
将匹配字符串开头的文本。
在_my_中,单词“简单”和“正则表达式”(更不用说“表演”)从来没有匹配过。 –
@UweKeim,也许你还有很多东西要学。 –
使用正则表达式。
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”。
string wordToRemoveFromBeginning = "Test_";
int index = st.IndexOf(wordToRemoveFromBeginning);
string cleanPath = (index < 0) ? st : st.Remove(index,
wordToRemoveFromBeginning.Length);
我会使用一些非常简单的代码在这里
string str = "Test_AA_234_6874_Test";
string substring = str.Substring(0, 4);
if (substring == "Test" || substring == "Leaf")
{
str= str.Remove(0, 5);
}
'的string.join( “”,st.Skip(5))'仅供参考,表现不佳。子串是要走的路。 – Karolis