2

より良いタイトルが思いついたら、自由に編集してください。

URL の #fragment 識別子 (別名ハッシュ) に基づいて特定のコミックを表示する単純な JavaScript システムを作成しようとしています。

このハッシュでスペースまたは同様の特殊文字を使用すると、URL エンコードによって %20 または同様のシーケンスに変換されます。

これは見栄えがよくありません。したがって、特定のコミック、ブログ投稿などを URL のタイトルで参照したい場合、すべてのスペースやその他の URL セーフでない文字を別の URL セーフ記号に置き換えるのが一般的だと思います。実際、StackOverflow もこれを行います。

しかし、置換したい記号が入力文字列にも存在する場合はどうすればよいでしょうか?

たとえば、すべてのスペース ( ) をハイフン (-) に置き換える場合、既存のハイフンはどうすればよいですか?

4

3 に答える 3

2

別の解決策は、Stack Overflow と同様の方法で実装することです。URL には、内部識別子と「ユーザー フレンドリ」な識別子の両方を含めます。たとえば、これはこの質問への「標準」リンクです。

http://stackoverflow.com/questions/14543452/symbol-substitution-in-urls-what-to-do-when-replacement-already-exists-in-input

ただし、次のリンクも同様に機能します。

http://stackoverflow.com/questions/14543452/this-part-of-the-address-is-just-to-look-nice

各コミックに何らかの識別子 (おそらく連番) とユーザー フレンドリな名前 (example.com/comics/#42-the-forty-second-comic-title など) を含めるために、同様のことを行うことができます。

このシステムには多くの利点があります。

  • 実装は非常に簡単です。フラグメントの最初のダッシュ (-) の前の部分を解析し、それを使用して特定のコミックへの URL を構築するだけです。
  • コミックのタイトルを変更しても内部識別子部分は変更されないため、コミックへの永続的なリンクを提供できます。
  • システムが正しく機能するためにコミック名は厳密には必要ないため、URL や画像パスなどの更新を気にすることなく、コミックの名前を簡単に変更できます。
  • これにより、クライアント側の JavaScript のみを使用して、次へボタンと前へボタンを簡単に実装できます ('#23-some-title' の前のコミックが '#23' になることがわかっているため)。
于 2013-02-05T08:12:42.223 に答える
1

これは一般的な問題であり、解決策はCharacter Escapingと呼ばれます。基本的なアプローチは次のとおりです。

  1. 「エスケープ文字」として知られる文字を選択します。C/C++/Java/etc ではバックスラッシュ (\) です。URL では、パーセント記号 (%) です。あなたのものはあなたが望むものである可能性があります。
  2. エスケープの後、別の文字セットとルールを定義できます。たとえば、C/C++/Java/etc では、\n は改行を意味し、\0 はヌル文字を意味します。URL では、% の後に 2 つの 16 進数文字が続きます。
  3. CRITICAL : エスケープ シーケンスに、エスケープ文字自体を指定する方法が含まれていることを確認します。C/C++/Java では、\\ は \ を意味します。URL エンコーディングでは %25 です。

あなたの問題のために、-、#、または @ を選択することをお勧めします (ただし、変換されていない合法的な URL エンコード文字は問題ありません)。- を使用すると仮定すると、次のようになります。

  1. - は -
  2. -= スペースの可能性があります

(上記のメタルールに従ってルールを作成することを忘れないでください。何でも構いません。)

于 2013-01-30T06:37:27.810 に答える
0

ウィキペディアで使用されているスキーマを使用して、基本的に投稿タイトルからIDを生成することもできます。これには、プレーンハッシュタグと比較して、投稿に関する情報も伝達されるという利点があります。のように見える入力を受け取り、出力するトランスデューサーを作成するのはかなり簡単なはずですが、一意のIDを生成することを確認する必要があります。たとえば、キーワードの場合、ウィキペディアはhttp://en.wikipedia.org/wiki/Machine_(disambiguation)に曖昧性解消ページを提供します。Some articleSome_ArticleMachine

于 2013-02-05T09:23:56.503 に答える