論理的な問題だと思います。私は 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」などで埋めることから始めるアプローチに取り組んでいます。このようにして、二重引用符を反復処理するときに、単一引用符の間のデータは無視されます。それが正しいアプローチかどうかはわかりません。