有没有一个javascript相当于PHPs strtok()?在PHP中,我会使用
$sub = strtok($string, ':');
Run Code Online (Sandbox Code Playgroud)
(感谢菲尔的回答)
但是,我需要在javascript中做同样的事情.
我有一个包含如下值的选择列表:
<select id="myFonts">
<option value='Leckerli One'>Leckerli One</option>
<option value='Lekton:regular,italic,bold'>Lekton (plus italic and bold)</option>
<option value='OFL Sorts Mill Goudy TT:regular,italic'>OFL Sorts Mill Goudy TT (plus italic)</option>
</select>
Run Code Online (Sandbox Code Playgroud)
在jQuery更改事件中,我需要提取"值"字段.但是,如果value字段包含冒号,我需要在冒号之前拉出字符串内容,然后不返回任何内容.
例如,在上面的示例中,我需要返回的值:
Leckerli One Lekton OFL Sorts Mill Goudy TT
这是我的jQuery当前(当值包含冒号和其他属性时不能正常工作):
$('#myFonts').change
(
function()
{
var myFont = $('#myFonts :selected').val();
$('#fontPreviewSrc').attr('href','http://fonts.googleapis.com/css?family='+myFont);
$('.fontPreview').attr('style','font-family:'+myFont+';font-style:normal;font-size:2em;padding-top:10px;white-space:nowrap');
}
);
Run Code Online (Sandbox Code Playgroud)
这是一个原生 JavaScript 解决方案,它支持多个字符,就像 PHP strtok()一样:
/**
* @param {string} s the string to search in
* @param {string} chars the chars to search for
* @param {boolean=} rtl option to parse from right to left
* @return {string}
* @example tok( 'example.com?q=value#frag', '?#' ); // 'example.com'
* @example tok( 'example.com?q=value#frag', '?#', true ); // 'frag'
*/
function tok ( s, chars, rtl ) {
var n, i = chars.length;
rtl = true === rtl;
while ( i-- ) {
n = s.indexOf(chars[i]);
s = n < 0 ? s : rtl
? s.substr(++n)
: s.substr(0, n);
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
将indexOf与substr或slice 一起使用比将split与pop 或shift一起使用要快。请参阅jsperf.com/tok
| 归档时间: |
|
| 查看次数: |
6761 次 |
| 最近记录: |