快速地从字符串中移除一些部件
本文关键字:些部 字符串 | 更新日期: 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;
但是只有当你的字符串中有am
和Uhr
时,它才会起作用。根据您的输入,您可能需要am.*?Uhr
或(?:a|p)m.*?Uhr
正则表达式。
如果格式严格并且总是包含Angebotseröffnung am
和Uhr
,这是最有效的:
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
如果字符串总是包含am和Uhr,并且在Uhr:
之前总是有amstring 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);