gpt4 book ai didi

c# - 遍历双引号但忽略单引号中的双引号

转载 作者:行者123 更新时间:2023-11-30 13:14:56 25 4
gpt4 key购买 nike

我猜这是一个逻辑问题。我正在用 C# 编写代码,但欢迎使用通用的伪代码解决方案。

我有这个文本文件,例如包含以下文本:

blah "hello john"
blah 'the code is "flower" '
blah "good night"

我想遍历双引号并对它们做一些处理,但我想忽略单引号中包含的双引号。我得到了开始双引号和结束双引号的位置(使用 string data 包含文本文件的内容):

C#

// Start searching from beginning
int quotestart = 0, quoteend = 0;

while (data.IndexOf('"', quotestart) != -1)
{
// Get opening double quote
quotestart = data.IndexOf('"', quotestart);
// Get ending double quote
quoteend = data.IndexOf('"', quotestart + 1);

string sub = data.Substring(quotestart + 1, quoteend - quotestart - 1);
Console.WriteLine(sub);

// Set the start position for the next round
quotestart = quoteend + 1;
}

使用我的代码,输出将是:

hello john
flower
good night

因为“花”在单引号内,我希望我的输出是:

hello john
good night

编辑

我目前正在研究一种方法,首先在单引号之间填充所有数据,例如“A”。这样,当我遍历双引号时,单引号之间的任何数据都会被忽略。不确定这是否是正确的方法。

最佳答案

I tried googling finite state machines but having no formal training in computer engineering I must admit I was a bit lost. Do you have any additional pointers?

FSM 是最简单的计算机形式之一。这个想法是您拥有有限数量的“状态”信息和稳定的输入流。每个输入都会导致状态以可预测的方式改变,仅基于当前状态和当前输入,并导致可预测的输出发生。

想象一下,您的输入是单个字符,而您的输出是单个字符或“空”字符。这是一个 FSM,可以执行您想要的操作:

  • 状态是OUTSIDEINSIDEDOUBLEINSIDESINGLE
  • 输入是 "'x。(WOLOG 让 x 代表任何其他字符。)

我们有三个状态和三个输入,所以有九种可能的组合。

  • 如果我们在 OUTSIDE 并得到 x,则留在 OUTSIDE 并发出 null
  • 如果我们在 OUTSIDE 并得到 ",则转到 INSIDEDOUBLE 并发出 null
  • 如果我们在 OUTSIDE 并获得 ',则转到 INSIDESINGLE 并发出 null
  • 如果我们是 INSIDEDOUBLE 并得到 x,保持 INSIDEDOUBLE 并发出 x
  • 如果我们是 INSIDEDOUBLE 并获得 ",则转到 OUTSIDE 并发出 null
  • 如果我们是 INSIDEDOUBLE 并获得 ',则保持 INSIDEDOUBLE 并发出 '
  • 如果我们是 INSIDESINGLE 并得到 x,保持 INSIDESINGLE 并发出 null
  • 如果我们是 INSIDESINGLE 并得到 ",则保持 INSIDESINGLE 并发出 null
  • 如果我们是 INSIDESINGLE 并获得 ',则转到 OUTSIDE 并发出 null

唯一剩下的就是说开始状态是OUTSIDE

那么让我们假设输入是 1 "2 "3 ' 4 "5 "' 6。状态和输出是:

  • OUTSIDE 得到 1,发出 null,保持 OUTSIDE
  • OUTSIDE 获取 ",发出 null,进入 INSIDEDOUBLE
  • INSIDEDOUBLE 得到 2,发出 2,保持 INSIDEDOUBLE
  • INSIDEDOUBLE 获取 ",发出 null,进入 OUTSIDE
  • OUTSIDE 得到 3,发出 null,保持 OUTSIDE
  • OUTSIDE 获取 ',发出 null,进入 INSIDESINGLE

...剩下的自己填。

这足以让您编写代码吗?

关于c# - 遍历双引号但忽略单引号中的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19528978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com