我正在尝试找到一种“最好”的方式将一个休息时间插入一串时间,这样它就会占用两条线并且总是在同一个地方分裂(例如,星期五5月11日上午11:11到11月5日星期五休息时间11:11 AM。
我不想更改字符串所在的div的宽度,因为如果没有选择时间,将显示警告消息。我知道我可以用.split()函数将字符串拆分成空格,并将其重建为我想要的字符串,但我认为必须有更好的方法。
有一个方法可以遍历(不一定是除法),认为字符串可以找到多次出现的元素。所以你可以做一些类似于词汇工具的东西,它可以改变你下次使用单词或其他东西的颜色,就像勒索音符生成器,报纸剪辑样字母一样,使用不同的字母类型字。
举个例子我想解决的是这个,但是通用的解决方案会很好。
答案 0 :(得分: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')
这会将字符串分成两个单词和一个1 or 2-digit
后的数字,如果这些数字后跟two
1 or 2-digit
个数字,后跟冒号后跟AM
或{ {1}}。
答案 1 :(得分: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
答案 2 :(得分:0)
对我而言,这似乎是XY Problem。
您要做的是防止时间与AM / PM指示符分开。不应尝试修复脚本,而应更改内容本身,以便在时间和指示符之间出现non-breaking space:
例如:8:00 AM
这将允许内容流畅地填充其容器,而不会将时间与指纹符号分隔开来。
如果内容本身是为了保留空白(以及换行符),那么内容应该设置为:
在CSS中:white-space: pre;
或包含在<pre>
元素中。
或者,如果内容不要预先格式化,但应始终分解为多行,则应使用<br>
元素:
Fri Nov 5<br>11:11 AM
在这种特殊情况下,我建议使用
实体而不是<br>
元素,因为<br>
元素适用于代表性需要多行的内容,例如诗歌或<address>
。
如果您无法更改服务器中文本的格式,可以使用.replace
相对轻松地插入不间断的空格字符:
newStr = yourStr.replace(/(\d\d) ([AP]M)/g, '$1 $2');
以下是模式的细分:/(\d\d) ([AP]M)/g
/
个字符$1
和$2
引用回捕获的字符。\d\d
用于匹配两个连续数字,表示当时的分钟数。\s+
。[AP]
用于匹配A
或P
字符[AP]M
匹配AM
或PM
。这可以替代地写为(AM | PM)g
标志用于告知替换发生在字符串中发现的每一个事件。