- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我猜这是一个逻辑问题。我正在用 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,可以执行您想要的操作:
OUTSIDE
、INSIDEDOUBLE
和INSIDESINGLE
。"
、'
和 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/
我是一名优秀的程序员,十分优秀!