繁体   English   中英

从 C# 中的字符串中提取特定文本

[英]Extracting specific text from a string in C#

这是字符串: "WATERMARK('Hello!')"

我要提取的是"Hello!" ,不包括"WATERMARK"和括号( 'Hello!' ,可以是任何东西,所以我需要从这里提取文本,最后我需要将WATERMARK('')替换为原始字符串中的任何内容)

我怎样才能做到这一点?

您可以使用正则表达式来捕获里面的字符串。
正则表达式值也会在里面捕获字符串

WATERMARK("")

这是正则表达式值的示例(我不知道它是否有效。)

/(?<=WATERMARK(')[\S\s]*(?='))/i

你可以只做一个while true循环来迭代字符串然后做一个if语句,这样当你到达第一个时(你可以开始将字符存储在一个新字符串中。然后继续检查while true循环)然后用 if 语句中断 while 循环。 然后通过使用 for(size--) 循环来反转字符串的顺序,并将字符放入一个新字符串中,然后在新的字符串中你的答案就是你提取的文本!

这是一种不需要 RegEx 的方法。

假设您提供了所有详细信息,无论原始字符串包含什么,结果都将始终为WATERMARK('')

此方法包括一些基本的错误检查,如果无法提取值,则返回 false。

private const string Prefix = "WATERMARK('";
private const string Suffix = "')";

bool RemoveWatermark(string s, out string value, out string result)
{
    int length = s.Length - Prefix.Length - Suffix.Length;
    if (length > 0)
    {
        value = s[Prefix.Length..(Prefix.Length + length)];
        result = string.Concat(Prefix, Suffix);
        return true;
    }

    value = string.Empty;
    result = string.Empty;
    return false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM