0

複数のテキストプロパティを持つオブジェクトを表現したいと思います。各プロパティは同じテキスト値を表しますが、言語は異なります。ユーザーが1つのフィールドを変更した場合は、他のフィールドを修正する必要があります。他のフィールドの文字列の先頭に1つのUnicode文字を追加して、注意が必要なフィールドを確認することを考えています。で値を確認する必要がありますobj.text_prop[0]

この目的で使用できるUnicode文字はどれですか?理想的には、印刷できず、JSとJSONでサポートされます。

4

2 に答える 2

1

このようなフラグは、文字レベル以外のプロトコル レベルで別の方法で行う必要があります。たとえば、各言語バージョンを単なる文字列ではなくオブジェクトにすることを検討してください。オブジェクトneedsAttentionは、文字列を含むプロパティに加えて、などのプロパティを持つことができます。

ただし、そのような情報を文字列に埋め込む必要がある場合は、ZERO WIDTH SPACE U+200B を使用できます。それ自体はラインブレイクの機会を意味しますが、これはここで邪魔されるべきではありません. 主な問題はおそらく、古いバージョンの IE では小さな四角形として表示される可能性があることです。

別の方法として、U+FFFF などの非文字コード ポイントを使用することもできますが、このコード ポイントを削除せずに文字列がプログラムから送信されないようにすることができます。Chで説明されているように。Unicode 標準の 16 のSpecial Areas and Format Charactersでは、文字以外のコード ポイントはアプリケーションの内部使用のために予約されており、テキスト交換では決して使用しないでください。

于 2013-02-26T08:58:18.480 に答える
0

行頭に奇妙な文字を使用しないことをお勧めします。次のようなものを実装できます。

<script type="text/javascript">
    function LocalizationSet(){};

    LocalizationSet.prototype.localizationItems = [];
    LocalizationSet.prototype.itemsNeedAttention = [];

    LocalizationSet.prototype.setLocalization = function(langId, text)
    {
        this.localizationItems[langId] = text;
        this.itemsNeedAttention[langId] = true;
    }

    LocalizationSet.prototype.getLocalization = function(langId)
    {
        return this.localizationItems[langId];
    }


    LocalizationSet.prototype.needsAttention = function(langId)
    {
        if(this.itemsNeedAttention[langId] == null)
        {
            return false;
        }
        return this.itemsNeedAttention[langId];
    }

    LocalizationSet.prototype.unsetAttentionFlags = function()
    {
        for(var it in this.itemsNeedAttention)
        {
            this.itemsNeedAttention[it] = false;
        }
    }

    //Example
    var set = new LocalizationSet();
    set.setLocalization("en","Hello");
    set.setLocalization("de","Willkommen");

    alert(set.needsAttention("en"));
    alert(set.needsAttention("de"));

    set.unsetAttentionFlags();
    alert(set.needsAttention("en"));
    set.setLocalization("en","Hi");
    alert(set.needsAttention("en"));
    //Shows true,true,false,true
</script>
于 2013-02-25T05:50:06.807 に答える