Проверьте строку для обозначения объекта / точки

У меня есть функция, которая принимает строку в качестве аргумента, моя проблема в том, что строка может быть предложением, например: "Меня зовут Джон Доу. Мне нужна машина". или это может быть точечная запись: "this.is.dot.notation". Я не знаю много о регулярных выражениях (если это то, что мне нужно), но я бы хотел разделить два типа.

Есть ли способ проверить, находится ли строка в нотации Object/Dot или нет, предполагая, что строка также может быть словом или предложением? С /questions/13396709/kak-zamenit-vse-tochki-v-stroke-ispolzuya-javascript/13396725#13396725, я думал об этом, но это не будет работать с предложением, которое может содержать более одного правильного периода? Следует ли использовать регулярные выражения?

if(input.split('.').length > 1){

}

Позже точечная нотация будет использоваться для доступа к свойствам объекта, как показано здесь: Преобразовать строку в нотацию точек, чтобы получить ссылку на объект

2 ответа

Решение

Проверьте, содержит ли строка хотя бы 2 точки, но без пробелов. Это, кажется, определение точечной нотации.

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

Или, может быть, это точка, которая не находится в конце строки и не содержит пробелов:

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

Это просто проверяет, следует ли за одним или несколькими символами слова точка, за которой следует один или несколько символов слова без пробела между ними. Если вам просто нужен логический тип, вы можете удалить троичный (знак вопроса и все, что следует за ним (конечно, оставьте точку с запятой)).

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";
}
Другие вопросы по тегам