在Javascript中第N次出现时将中断插入字符串
我试图找到一种“最佳”的方法,在一个时间串中插入一个中断,这样它就占用了两行时间,并且总是在同一个位置拆分(例如,周五11月5日上午11:11到周五11:11上午11:11) 我不想更改字符串所在的div的宽度,因为如果未选择时间,将显示警告消息。我知道我可以使用.split()函数将字符串拆分为空格,然后将其重新生成为所需的字符串,但我认为一定有更好的方法 如果有一个遍历(不一定要分割)字符串的方法来查找多次出现的元素,那就太好了。因此,你可以做一些事情,比如一个词汇工具,在你下次使用一个单词时改变它的颜色,或者做一些有趣的事情,比如一个赎金便笺生成器,报纸剪辑,比如信件,对同一个单词使用不同的字母类型 例如,我试图解决的是这个问题,但是一个通用的解决方案会很好。在Javascript中第N次出现时将中断插入字符串,javascript,string,Javascript,String,我试图找到一种“最佳”的方法,在一个时间串中插入一个中断,这样它就占用了两行时间,并且总是在同一个位置拆分(例如,周五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 AM
white-space: pre;
Fri Nov 5<br>11:11 AM
newStr = yourStr.replace(/(\d\d) ([AP]M)/g, '$1 $2');