[英]How to do I cut off a certain part a String?
我的程序中有一個大字符串。 例如:
String Newspaper = "...Blablabla... What do you like?...Blablabla... ";
現在我想刪掉“你喜歡什么?” 將其寫入新字符串。 但問題是“Blablabla”每次都不同。 Whit “cut out”我的意思是你提交了一個開始和一個結束詞,所有寫在這些行之間的東西都應該在新的字符串中。 因為這句話“你喜歡什么?” 有時會發生變化,除了起始詞“What”和結束詞“like?”
感謝每一個回復
您必須執行 substring,如下例所示。 有關子字符串的更多信息,請參見源代碼。
// A long string
string bio = "Mahesh Chand is a founder of C# Corner. Mahesh is also an
author, speaker, and software architect. Mahesh founded C# Corner in
2000.";
// Get first 12 characters substring from a string
string authorName = bio.Substring(0, 12);
Console.WriteLine(authorName);
您可以編寫以下方法:
public static string CutOut(string s, string start, string end)
{
int startIndex = s.IndexOf(start);
if (startIndex == -1) {
return null;
}
int endIndex = s.IndexOf(end, startIndex);
if (endIndex == -1) {
return null;
}
return s.Substring(startIndex, endIndex - startIndex + end.Length);
}
如果未找到開始或結束模式,則返回null
。 僅搜索跟隨開始模式的結束模式。
如果您使用的是 C# 8+ 和 .NET Core 3.0+,您也可以將最后一行替換為
return s[startIndex..(endIndex + end.Length)];
測試:
string input = "...Blablabla... What do you like?...Blablabla... ";
Console.WriteLine(CutOut(input, "What ", " like?"));
印刷:
What do you like?
如果您對 Regex 感到滿意,您還可以編寫:
public static string CutOutRegex(string s, string start, string end)
{
Match match = Regex.Match(s, $@"\b{Regex.Escape(start)}.*{Regex.Escape(end)}");
if (match.Success) {
return match.Value;
}
return null;
}
\b
確保僅在單詞的開頭找到開始模式。 如果你願意,你可以放下它。
在這種情況下,我會這樣做,剪切第一部分,然后剪切第二部分,並使用它們作為剪切參數與固定單詞連接。
public string CutPhrase(string phrase)
{
var fst = "What";
var snd = "like?";
string[] cut1 = phrase.Split(new[] { fst }, StringSplitOptions.None);
string[] cut2 = cut1[1].Split(new[] { snd }, StringSplitOptions.None);
var rst = $"{fst} {cut2[0]} {snd}";
return rst;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.