快速地从字符串中移除一些部件

本文关键字:些部 字符串 | 更新日期: 2023-09-27 17:52:17

从下面的字符串String1中,我想删除"am"之前的所有内容"Uhr"之后的所有内容

string String1 = "Angebotseröffnung am 27.03.2014, 11:00 Uhr, Ort: Vergabestelle, siehe a).";

最后是这个字符串。"am 27.03.2014, 11:00 Uhr".

我正在使用这个代码,但我知道这不是一个好方法。谁能给我提供更好的选择吗?

String1 = String1.Replace("Angebotseröffnung", "");
String1 = String1.Replace("Ort", "");
String1 = String1.Replace("Vergabestelle", "");
String1 = String1.Replace("siehe", "");
String1 = String1.Replace("a)", "");

快速地从字符串中移除一些部件

试试这样:

var string1 = "Angebotseröffnung am 27.03.2014, 11:00 Uhr, Ort: Vergabestelle, siehe a).";
var startIndex = string1.IndexOf("am"); // 18
var endIndex = string1.IndexOf("Uhr") + 3; // 42
// Get everything between index 18 and 42
var result = string1.Substring(startIndex, endIndex - startIndex); 
// result: "am 27.03.2014, 11:00 Uhr"

另一个选择是使用Regex.Match.

string output = Regex.Match(String1, "am.*Uhr").Value;

但是只有当你的字符串中有amUhr时,它才会起作用。根据您的输入,您可能需要am.*?Uhr(?:a|p)m.*?Uhr正则表达式。

如果格式严格并且总是包含Angebotseröffnung amUhr,这是最有效的:

string String1 = "Angebotseröffnung am 27.03.2014, 11:00 Uhr, Ort: Vergabestelle, siehe a).";
string result = null;
string startPattern = "Angebotseröffnung am ";
int start = String1.IndexOf(startPattern);
if (start >= 0)
{
    start += startPattern.Length;
    string endPattern = " Uhr";
    int end = String1.IndexOf(endPattern, start);
    if (end >= 0)
        result = String1.Substring(start, end - start + endPattern.Length);
}

如果你知道格式将永远是相同的=>

var r = new Regex("am 'd{1,2}.'d{1,2}.'d{4} Uhr");
var result = r.Match(input);

对于StringBuilder, Replace的工作方式与字符串相同,但它不需要为其结果赋值

class Program
        {
            static void Main()
            {
        const string samplestring = "hi stack Over Flow String Replace example.";
        // Create new StringBuilder from string
                StringBuilder str = new StringBuilder(samplestring );

                // Replace the first word
                // The result doesn't need assignment
                str.Replace("hi", "hello");
                Console.WriteLine(b);
        }
        }
    Output Will be -->
    hello stack Over Flow String Replace example

如果字符串总是包含amUhr,并且在Uhr:

之前总是有am
string String1 = "Angebotseröffnung am 27.03.2014, 11:00 Uhr, Ort: Vergabestelle, siehe a).";
int indexOfAm = String1.IndexOf("am");
int indexOfUhr = String1.IndexOf("Uhr");
string final = String1.Substring(indexOfAm, (indexOfUhr + 3) - indexOfAm);

试试这个

  String1 = String1.Substring(String1.IndexOf("am"), (String1.IndexOf("Uhr") - String1.IndexOf("am"))+3);