如何使用Javascript检查我的数据字符串是否以标点符号开头?我查看了Check if string is a punctuation character和How to know that a string starts/ends with a specific string in jQuery?以及其他一些人,但我无法告诉我哪里出错了。
这是我到目前为止的一小部分:
var punctuations = [".", ",", ":", "!", "?"];
if (d.endContext.startsWith(punctuations)) {console.log(d.endContext)
} else {console.log('false')};
我只会得到“假”。返回,但如果我传入"。"在
if(d.endContext.startsWith('.'))
...
我得到了正确的结果。我也试过
String punctuations = ".,:;?!"
就像Check if string is a punctuation character建议的那样,但Chrome和Firefox都给了我错误消息("未捕获语法错误:意外标识符"""语法错误:丢失;在语句"之前)。看起来这个错误通常是在Javascript中编写多行字符串,我不认为我会尝试这样做。 d.endContext将打印多行字符串,但是当我刚刚通过"。#34;时它工作正常,所以我不认为这是问题所在。
答案 0 :(得分:8)
使用Regex要简单得多。
var str = '.abc'
var result = !!str.match(/^[.,:!?]/)
console.log(result)
/
表示正则表达式的开始/结束
^
表示'以'开头'
[]
表示'字符集'。它会匹配[
和]
此外,这个应用程序非常适合学习正则表达式! http://regexr.com/
祝你有愉快的一天! :d
答案 1 :(得分:2)
使用some
和startsWith
方法。
punctuations.some(function(character) {
return string.startsWith(character)
});
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
some()方法测试数组中的某个元素是否通过了由提供的函数实现的测试。 或者您也可以使用正则表达式
/[.,:!?]/.test(string.charAt(0))
答案 2 :(得分:2)
这是一个很好的解决方案:
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 + " <---<< Punctuations!"
});
var nonPunkyStrings = punctuations.map(function (item, i) {
return i + " <---<< No punctuations!"
});
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
答案 3 :(得分:2)
使用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打破所有非beta浏览器Array.prototype.includes:
var punctuations = [".", ",", ":", "!", "?"];
var stringToSearch = d.endContext; // Your string to search
if (punctuations.includes(stringToSearch.charAt(0))) {
// Your awesome code goes here
}
兼容: