Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何删除字符串的一部分_C#_Asp.net_.net - Fatal编程技术网

C# 如何删除字符串的一部分

C# 如何删除字符串的一部分,c#,asp.net,.net,C#,Asp.net,.net,我只想删除指定字符串开头的单词Test和Leaf,而不是从另一端,因此字符串Test_AA_234_6874_Test应该是AA_234_6874_Test,但当我使用时。替换它将从我不想要的任何地方替换单词Test。如何操作 这是我所做的代码 string st = "Test_AA_234_6874_Test"; st = st.Replace("Test_",""); 您可以使用正则表达式来执行此操作。正则表达式的第三个参数指定要替换多少次 string st = "Test_AA_23

我只想删除指定字符串开头的单词Test和Leaf,而不是从另一端,因此字符串Test_AA_234_6874_Test应该是AA_234_6874_Test,但当我使用时。替换它将从我不想要的任何地方替换单词Test。如何操作 这是我所做的代码

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

您可以使用正则表达式来执行此操作。正则表达式的第三个参数指定要替换多少次

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个字母,你也可以使用更有效的方法

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

考虑检查字符串是否以开始和/或以修剪结束,并确定要保持的结束和开始位置。然后使用子字符串方法仅获取所需的部分

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();

        }
    }
}

^将匹配字符串开头的文本。

使用正则表达式

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

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

Replace参数是您的输入字符串str1、要匹配的模式以及要替换的内容,在本例中是一个空格。^字符的意思是看字符串的开头,因此类似MyTest\u AAAA\u 234\u 6874\u Test的内容仍然会返回MyTest\u AA\u 234\u 6874\u 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.Skip5供参考,性能不佳。在我看来,simple和regex(更不用说性能)这两个词从未匹配过。