1

我有一个将字符串作为参数的函数,我的问题是字符串可以是一个句子,例如:“我的名字是 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

4

2 回答 2

1

测试字符串是否包含至少 2 个点,但没有空格。这似乎是点符号的定义。

if (str.match(/\..*\./) && !str.match(/\s/)) {
    // dot notation
} else {
    // sentence
}

或者它可能是一个不在字符串末尾的点,并且没有空格:

if (str.match(/\.[^.]/) && !str.match(/\s)) {
于 2014-09-12T01:33:09.153 回答
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";
}
于 2014-09-12T02:29:54.763 回答