【问题标题】:Extracting specific text from a string in C#从 C# 中的字符串中提取特定文本
【发布时间】:2022-09-23 01:26:56
【问题描述】:

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

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

我怎样才能做到这一点?

  • 有多少东西可以是什么东西?还可以包含括号吗?多引号?在这种情况下,事情变得更加困难。否则,您可以使用正则表达式,例如WATERMARK\\(\'(?&lt;content&gt;.*?)\'\\) 来捕获WATERMARK(\' 和第一个\') 之间的所有内容。或 ``WATERMARK(\'(?<content>.*)\')` 捕获所有内容,直到最后一个 \')
  • 如果值可以包含 \")\",则使用文本解析而不是正则表达式可能会更好。
  • 也许Split\',只要列表计数是3 的倍数,列表中的奇数条目将在\' 标记之间。
  • 单引号也可以是双引号,所以它也可以是 WATERMARK(\"Hello!\") 或 WATERMARK(\'Hello!\') 甚至 WATERMARK\'Hello!\' 或双引号 WATERMARK\"Hello! \"

标签: c#


【解决方案1】:

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

WATERMARK("")

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2021-07-28
      相关资源
      最近更新 更多