如何使用Javascript检查我的数据字符串是否以标点符号开头? 我查看了检查字符串是否为标点符号,以及如何知道一个字符串以jQuery中的特定字符串开头/结尾? 以及其他一些,但我无法确定我要去哪里。
这是我到目前为止的摘要:
var punctuations = [".",",",":","!","?"];
if (d.endContext.startsWith(punctuations)) {console.log(d.endContext)
} else {console.log('false')};
我只会得到"假"的返回,但是如果我输入""。 在
if(d.endContext.startsWith('.'))
...
我得到正确的结果。 我也试过
String punctuations =".,:;?!"
例如,建议检查字符串是否为标点符号,但是Chrome和Firefox均向我显示错误消息(分别为"未捕获的语法错误:意外的标识符"和"语法错误:缺少;之前的语句")。 似乎该错误通常是因为用Javascript写多行字符串,我认为我没有这样做。 d.endContext将打印多行字符串,但是当我仅传递"。"时它可以正常工作,所以我认为这不是问题。
使用RegExp测试字符串。
使用Regex更简单。
var str = '.abc'
var result = !!str.match(/^[.,:!?]/)
console.log(result)
/表示正则表达式的开始/结束
^表示"开始于"
[]表示"字符集"。它将匹配[和]之间的任何字符
此外,这个程序对于学习正则表达式非常有用!
http://regexr.com/
祝你今天愉快! :D
如果您可以解释!!的作用以及正则表达式的详细含义,那将是很好的。
这对我有用,但是我同意对!!的一些解释! 有助于!
说明已添加!
@ low,@ west,我认为Rokt3r的!!只能是两个not运算符的序列,表示无操作。 我将尝试将其删除,看看是否有人反对…
使用Array.prototype.indexOf可能是最简单的:
var punctuations = [".",",",":","!","?"];
var stringToSearch = d.endContext; // Your string to search
if (punctuations.indexOf(stringToSearch.charAt(0)) !== -1) {
// Your awesome code goes here
}
它与IE9以及几乎所有的Chrome和Firefox(低至1.5)版本兼容,但是如果您使用的是jQuery,则可以使用inArray进一步向后兼容。
或者...只是为了好玩,您可以使用新的ES7 Array.prototype.includes进入另一端,保持领先地位,并打破所有非beta版浏览器:
var punctuations = [".",",",":","!","?"];
var stringToSearch = d.endContext; // Your string to search
if (punctuations.includes(stringToSearch.charAt(0))) {
// Your awesome code goes here
}
兼容于:
Chrome 47(尚未发布)
Firefox 43(尚未发布)
这是一个很好的解决方案:
var punctuations = [".",",",":","!","?"];
var punkyString =".hello!";
var nonPunkyString ="hello!";
function isPunkyString(str) {
return punctuations.indexOf(str[0]) > -1;
}
console.log(punkyString,"is punky:", isPunkyString(punkyString));
console.log(nonPunkyString,"is punky:", isPunkyString(nonPunkyString));
单元测试!
var punkyStrings = punctuations.map(function (item) {
return item +"
});
var nonPunkyStrings = punctuations.map(function (item, i) {
return i +"
});
punkyStrings.forEach(function (item, i) {
console.log("Expect","isPunkyString("" + item +"")","to be true:", isPunkyString(item));
});
nonPunkyStrings.forEach(function (item, i) {
console.log("Expect","isPunkyString("" + item +"")","to be false:", isPunkyString(item));
});
为什么美丽?因为我用过punky一词! :D哦,我将字符串视为数组。哪个好!
是否还有其他人测试过他们的代码? :D
使用some和startsWith方法。
punctuations.some(function(character) {
return string.startsWith(character)
});
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some
The some() method tests whether some element in the array passes the test implemented by the provided function.
Or you can also use regex
/[.,:!?]/.test(string.charAt(0))
什么是some?
好的,我刚刚学到了一些新东西。 :)
@Praveen Kumar-developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/我也不知道,但是它看起来非常有用
是的,我刚刚发布了一个链接。 我认为它是ES6的一部分