【问题标题】:Check String for Object/Dot Notation检查字符串的对象/点表示法
【发布时间】:2014-11-06 02:22:02
【问题描述】:

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

【问题讨论】:

  • 请说明您实际尝试解决的问题是什么让您认为您需要检测字符串中的句号/句号,以防止我们进入XY problem
  • @Mike'Pomax'Kamermans 啊,对不起。我有一个将字符串作为参数的函数,我的问题是字符串可以是一个句子,例如:“我的名字是 John Doe。我需要一辆车。”或者它可以是一个点符号:“this.is.dot.notation”。我不太了解正则表达式(如果这是我需要的话),但我想将这两种类型分开。
  • 请将所有内容添加到您的问题中,以便其他人无需阅读评论线程即可理解您的需求=)也就是说,您的点符号示例似乎没有多大意义,您有该输入甚至应该做什么的具体示例?
  • @Mike'Pomax'Kamermans 更新了! :)
  • 很好,但您仍然需要解释“点符号”输入应该做什么。

标签: javascript regex string syntax object-notation


【解决方案1】:

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

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

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

if (str.match(/\.[^.]/) && !str.match(/\s)) {

【讨论】:

  • "a.b" 似乎是一个点符号,但它只包含一个点。 2个点真的有必要吗?
  • 我只是在猜测他认为点符号是什么。我不希望像 Hello. 这样的句子被视为点符号。也许它之前和之后是一个点?
  • @Barmar 第二个有效。我也试过test(),但给了我一些问题,所以我改用match()
  • 是的,我想它实际上是/regexp/.test(str),而不是str.test(/regexp/)
【解决方案2】:

这只是检查一个或多个单词字符后面是否有一个点,该点后面是一个或多个单词字符,中间没有空格。如果您只需要一个布尔值,您可以删除三元(问号及其后面的所有内容(当然保留分号))。

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";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多