在Javascript中第N次出现时将中断插入字符串

在Javascript中第N次出现时将中断插入字符串,javascript,string,Javascript,String,我试图找到一种“最佳”的方法,在一个时间串中插入一个中断,这样它就占用了两行时间,并且总是在同一个位置拆分(例如,周五11月5日上午11:11到周五11:11上午11:11) 我不想更改字符串所在的div的宽度,因为如果未选择时间,将显示警告消息。我知道我可以使用.split()函数将字符串拆分为空格,然后将其重新生成为所需的字符串,但我认为一定有更好的方法 如果有一个遍历(不一定要分割)字符串的方法来查找多次出现的元素,那就太好了。因此,你可以做一些事情,比如一个词汇工具,在你下次使用一个单词

我试图找到一种“最佳”的方法,在一个时间串中插入一个中断,这样它就占用了两行时间,并且总是在同一个位置拆分(例如,周五11月5日上午11:11到周五11:11上午11:11)

我不想更改字符串所在的div的宽度,因为如果未选择时间,将显示警告消息。我知道我可以使用.split()函数将字符串拆分为空格,然后将其重新生成为所需的字符串,但我认为一定有更好的方法

如果有一个遍历(不一定要分割)字符串的方法来查找多次出现的元素,那就太好了。因此,你可以做一些事情,比如一个词汇工具,在你下次使用一个单词时改变它的颜色,或者做一些有趣的事情,比如一个赎金便笺生成器,报纸剪辑,比如信件,对同一个单词使用不同的字母类型

例如,我试图解决的是这个问题,但是一个通用的解决方案会很好。

var日期='11月5日星期五上午11:11'
日期.替换(/(\w+\w+\d{1,2})(\d{1,2}:\d{1,2}上午|下午)/,“$1
$2”)

这将在两个单词和一个
1或2位
数字后分割字符串,如果这些数字后面跟有
2个
1或2位
数字,这些数字由一个冒号分隔,后跟
AM
PM

Prototype

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
替换为


对我来说,这似乎是一个问题

您要做的是防止时间从其AM/PM指示器中分离。与其尝试修复脚本,不如更改内容本身,以便在时间和指示符之间发生:

例如: 这将允许内容以流畅的方式填充其容器,而无需使用换行符将时间与指示器分隔开

如果内容本身要保留空白(因此换行符),则内容的样式应为:

在CSS中: 或包含在

Fri Nov 5<br>11:11 AM
下面是模式的分解:
/(\d\d)([AP]M)/g

  • RegExp文本由
    /
    字符分隔
  • paren用于捕获字符组,替换字符串中的
    $1
    $2
    引用回捕获的字符
  • \d\d
    用于匹配表示时间中分钟数的两个连续数字
  • 空格用于匹配分钟和AM/PM指示器之间的空格。如果HTML内容中有多个空格字符,则可能需要使用
    \s+
  • [AP]
    用于匹配
    A
    P
    字符
  • [AP]M
    匹配
    AM
    PM
    。这也可以写成(上午|下午)
  • g
    标志用于告诉在字符串中找到的每个事件都要进行替换

那么它“总是在同一个地方分割”的确切位置是什么呢?请给我们几个例子,这样我们就可以看到您正在尝试做什么。您可以始终进行字符计数,如果达到阈值,则插入一个中断<代码>var charLength=$(“.text”).length我添加了问题图片。内容应包含
8:00
AM
之间的不间断空格字符。在HTML中,它只是
8:00am
,这将防止时间被错误地分割。
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 
8:00&nbsp;AM
white-space: pre;
Fri Nov 5<br>11:11 AM
newStr = yourStr.replace(/(\d\d) ([AP]M)/g, '$1&nbsp;$2');