ユーザーに構成、名前=値のペアの編集を許可するときに空白を処理するためのベストプラクティスは何ですか?


8

たとえば、悪名高いパス変数をユーザーに定義させます。どのように解釈しapppath = C:\Program Files\Appますか?

これは、プログラミング言語がホワイトスペースを無視する慣習を採用しているように見え、読みやすさのために等号の前後に残しますが、アプリケーションではホワイトスペースを含む有効な変数値である可能性があります(サフィックスであると考えてください)。

キーにも空白を含めることができますか?

アプリケーションの一般的なベストプラクティスは何ですか?私が持っている場合:

key-example = value-example

キーの存在"key-example"または"key-example "と値を存在"value-example"またはと解釈する必要があり" value-example"ますか?


あなたの質問を2回読みましたが、それでも理解できません。少し言い換えたり、達成しようとしていることと一緒にコードを表示したりできますか?
Jay Zelenkov、2015

ファイルの解析に使用しているプログラミング言語は何ですか?
TulainsCórdova2015

2
@ user61852:なぜそれが重要なのですか?構成ファイルの要件は、プログラミング言語から完全に独立している必要があります。同じ構成ファイルを共有する5つの異なる言語で書かれた5つの異なるプログラムを考えてみてください。
Doc Brown

1
@ user61852それは問題ではありません。私はこれをjavascriptで排他的に使用するので:代わりに使用しようとしました=(私の質問は私のアプリに限定されないため、その言語について質問することはまったく無関係です)が、これは構成をJSONオブジェクトとして読み取るのに役立ちませんでした。JSONはすべての値を引用符で囲む必要がありますが、これはユーザーの不要な負担です。
Val

@valtih一部の言語にはすでに設定ファイルのAPIがあるため、私は尋ねました。たとえば、Javaには、これらの種類のキー/値ファイルを処理するPropertiesクラスがあります。
TulainsCórdova2015

回答:


14

ユーザーとして、等号の両側の空白がキーの値や値を変更するとは思わない。unix.SEでこの関連する質問も参照してください。

ユーザーを難しくしないでください。キーと値の両方から空白を削除してください。先頭の空白に実際の使用例がある場合は、ユーザーにキーまたは値を引用符で囲ませます。


2
これが実際に質問に答える唯一の答えです。
オービット

11

アプリのルールを定義するのはあなた次第です。

たとえば、次のように定義できます。

  • 等号の前後の空白は無視され、

  • キー内の空白は禁止されています、

  • 値の内側の空白は、値が引用符で囲まれている場合にのみ使用できるため、次のようになります。

    say-hello = Hello, World!
    

    禁止されていますが、

    say-hello = "Hello, World!"
    

    許可されます。これにより、空白の接頭辞を付けることができます。

    say-hello = "    Indentation is sweet."
    

フォーマットの定義は複雑な作業になる場合があります。例えば:

  • どのように引用符をエスケープしますか?

  • 引用符をエスケープするために使用するエスケープ文字をどのようにエスケープしますか?

  • 空の値をどのように処理しますか?

  • キーの最大長は?値はどうですか?

  • 複数行の値をどのように処理しますか?

  • スペース以外の空白のUnicode文字(改行しないスペース文字など)はどうですか?

  • 通常画面に表示されないユニコード文字はどうですか?たとえば、UnicodeカテゴリCfまたはZlをどのように処理しますか?

  • キーで使用できる文字は何ですか?たとえば、次のとおりです。

    '
    

    有効なキー?

  • 次の行でうまくいきますか?¹

    say-hello ꘌ "Hello, World!"
    

    ヒント:等号は等号ではなく、文字0xa60c(Vai音節延長文字)です。等号の代わりにこの記号を使用する人はほとんどいませんが、Microsoft Wordからのコピーと貼り付けがより頻繁に行われます(引用符を注意深く確認してください)。

    say-hello = “Hello, World!”
    

これが理由です。フォーマットを定義して正確かつ冗長に説明できることが完全に確実でない限り、既存のフォーマットを使用してください

JSONまたはXMLは、ほぼすべてのプログラミング言語で使用できる一般的に使用される形式です。データベースを使用して、基になる形式を抽象化することもできます。たとえば、Redisはキー値ストアの一般的なソリューションです。


Windows Windowsを使用しているChromeユーザーは、おそらく四角に疑問符が表示されます。他のブラウザやLinux上のChromeでは、文字が等号のように表示され、誤解を招きやすい場合があります。唯一の視覚的な違いは、水平バー間のスペースにわずかな違いがあることです。


さて、私はそれをユーザーに指定します。等式で区切られたキー/値のペアの形式ごとに単純な行を念頭に置いていました。つまり、すべての行が区切られ=、引用符は問題ではありませんが、空白があると不明確になるため、空白を使用すると不明確になります。先頭/末尾の空白が削除されていると言うだけで十分です。ありがとう。
2015

@valtih:特に末尾の空白を削除するのは良いことです、IMO。それは本質的に見えないので、ほとんどのユーザーはそれがそこにあることに気付かないでしょう。
Bart van Ingen Schenau、2015

@mainmaその特大の等号は、私のwin7ボックスで完全にレンダリングされます。
ダンはFirelightによって2015

@DanNeely:それは変だ。Windows 8.1では、Chromeは四角に疑問符を表示します。
Arseni Mourzenko 2015

1
@MainMa Chromeでは、WindowsでのUnicodeフォールバックに常に問題がありました。これは、その存在全体(約5年?)でかなりよく知られている問題です。ここに(の1つですか?)バグがあります。この時点では修正されない可能性もあります。FirefoxとIEでは問題なく動作します。
ボブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.