我有一个函数,它接受一个字符串作为参数,我的问题是该字符串可以是一个句子,如:"我的名字是John Doe。我需要一辆车。"或者它可以是点符号:" this.is.dot.notation"。我不太了解正则表达式(如果这是我需要的),但我想将这两种类型分开。
有没有办法检查字符串是否是Object / Dot表示法,假设字符串也可以是单词或句子? 从https://stackoverflow.com/a/2390793/1251031开始,我想到了这一点,但是对于可能包含多个句点的句子,这不适用吗?应该使用正则表达式吗?
if(input.split('.').length > 1){
}
稍后,点符号将用于访问对象属性,如下所示:Convert string in dot notation to get the object reference
答案 0 :(得分:1)
测试字符串是否包含至少2个点,但没有空格。这似乎是点符号的定义。
if (str.match(/\..*\./) && !str.match(/\s/)) {
// dot notation
} else {
// sentence
}
或者它可能是一个不在字符串末尾的点,也没有空格:
if (str.match(/\.[^.]/) && !str.match(/\s)) {
答案 1 :(得分:0)
这只是检查一个或多个单词字符后面跟着一个点,后面跟着一个或多个单词字符,其间没有空格。如果您只需要一个布尔值,您可以删除三元组(问号及其后面的所有内容(当然保留分号)。)
function isDotNotation(str) {
return (/[\w+]\.[\w+]/gi).test(str) ? "Dot Notation" : "Sentence";
}
这会破坏它:isDotNotation(" Hell o.there");
所以这是一个检查一个或多个空格的丑陋的人。
function isDotNotation(str) {
return ( (/[\w+]\.[\w+]/gi).test(str) ) && ( !(/\s+/g).test(str) ) ? "Dot Notation" : "Sentence";
}