簡體   English   中英

如何切斷字符串的某個部分?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM