0

時間の文字列にブレークを挿入する「最良の」方法を見つけようとしています。これにより、2 行になり、常に同じ場所で分割されます (たとえば、11 月 5 日金曜日 11:11 AM から 11 月 5 日金曜日 11:11 ブレーク 11:午前11時)。

時間が選択されていない場合、警告メッセージが表示されるため、文字列が含まれる div の幅を変更したくありません。.split() 関数を使用して文字列をスペースに分割し、必要な文字列に再構築できることはわかっていますが、もっと良い方法があるはずだと思いました。

複数回出現する要素を見つけるために、文字列をトラバースする (必ずしも分割する必要はない) メソッドがあると便利です。つまり、単語の色を変更するボキャブラリ ツールのようなものや、身代金メモ ジェネレーター、新聞の切り抜きのような文字など、楽しみのために同じ単語に異なる文字タイプを使用するようなものを実行できます。語。

例として、私が修正しようとしているのはこれですが、一般的な解決策がいいでしょう。 ここに画像の説明を入力

4

3 に答える 3

0
var date = 'Fri Nov 5 11:11 AM'
date.replace(/(\w+ \w+ \d{1,2}) (\d{1,2}:\d{1,2} AM|PM)/, '$1 <br> $2')

これにより、2つの単語と1 or 2-digit数字の後に文字列が分割されます。これらtwo 1 or 2-digitの後に、コロンで区切られた数字と、またはのいずれかが続くAM場合PMです。

于 2012-11-06T17:34:17.390 に答える
0

私には、これはXY Problemのように見えます。

あなたがしたいことは、時間が AM/PM 指定子から分割されないようにすることです。スクリプトを修正しようとする代わりに、コンテンツ自体を変更して、時間とデジグネータの間に非分割スペースが発生するようにする必要があります。

例えば:
8:00&nbsp;AM

これにより、時間とデジグネータを改行で区切ることなく、コンテンツがコンテナを流動的に満たすことができます。

コンテンツ自体が空白 (したがって改行) を保持することを意図している場合、コンテンツは次のようにスタイル設定する必要があります。

CSS で:
white-space: pre;

または<pre>要素内に含まれます。

または、コンテンツを事前にフォーマットするのではなく<br>、常に複数行に分割する必要がある場合は、要素を使用する必要があります。

Fri Nov 5<br>11:11 AM

この特定のケースでは、要素&nbsp;の代わりにエンティティを使用することをお勧めします。要素は、詩や.<br><br><address>

サーバーからテキストの形式を変更できない場合は、.replace比較的簡単に非改行スペース文字を挿入できます。

newStr = yourStr.replace(/(\d\d) ([AP]M)/g, '$1&nbsp;$2');

パターンの内訳は次のとおりです。/(\d\d) ([AP]M)/g

  • /RegExp リテラルは文字で区切られています
  • 括弧は文字のグループをキャプチャするために使用され、置換文字列の$1andはキャプチャされた文字を参照します。$2
  • \d\d時間の分を表す 2 つの連続する数字を一致させるために使用されます。
  • スペースは、分と AM/PM 指定子の間のスペースと一致させるために使用されます。\s+HTML コンテンツに複数の空白文字がある場合に使用できます。
  • [AP]AまたはP文字のいずれかに一致するために使用されます
  • [AP]MAMまたはに一致しPMます。これは (AM|PM) のように書くこともできます。
  • フラグは、g文字列で見つかったすべての出現に対して置換が発生するように指示するために使用されます。
于 2012-11-06T18:17:41.827 に答える
0

プロトタイプ

String.prototype.addLine = function(str, splitter) {
    var args = str.split(splitter);  

    return this.replace(/{(\d+)}/g, function(match, number) {
       return typeof args[number] != 'undefined'? args[number]: match;
    });
};

使用法(html の場合は に置き換え\nます<br />)

var d1 = "Fri Nov 5 11:11 AM"; //Original format
var d2 = "{0} {1} {2}\n {3} {4}".addLine(d1,' '); //With the new line break 
于 2012-11-06T18:01:27.610 に答える