2014-09-12 3 views
1

У меня есть функция, которая принимает строку в качестве аргумента, моя проблема в том, что строка может быть предложением, например: «Меня зовут Джон Доу, мне нужен автомобиль». или это может быть точечное обозначение: «this.is.dot.notation». Я мало знаю о регулярном выражении (если это то, что мне нужно), но я хотел бы разделить эти два типа.Check String для Object/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

+2

объяснить, что проблема на самом деле вы пытаетесь решить, что заставляет вас думать, что вам нужно, чтобы обнаружить торможения/периоды в строках, чтобы помешать нам отправиться в [проблему XY] (HTTP: // мета- .stackexchange.com/questions/66377/what-is-the-xy-problem) –

+0

@ Mike'Pomax'Kamermans Ах, извините. У меня есть функция, которая принимает строку в качестве аргумента, моя проблема в том, что строка может быть предложением, например: «Меня зовут Джон Доу. Мне нужна машина». или это может быть точечное обозначение: «this.is.dot.notation». Я мало знаю о регулярном выражении (если это то, что мне нужно), но я хотел бы разделить эти два типа. – iwatakeshi

+0

, пожалуйста, добавьте все это к своему вопросу, чтобы другие могли понять, что вам нужно, не имея необходимости читать поток комментариев =) Тем не менее, ваш пример точечной нотации не кажется очень значимым, есть ли у вас конкретный пример того, что этот вход должен даже делать? –

ответ

1

тест, если строка содержит, по меньшей мере, 2 точки, но без пробелов. Это, по-видимому, определение точечной нотации.

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

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

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

« ab »кажется точечной нотацией, но содержит только одну точку. необходимо? –

+0

Я просто догадывался, что он считает точечной нотацией. Я не хотел, чтобы предложение типа «Hello.' считалось точечным обозначением. Может быть, его точка с чем-то до и после него? – Barmar

+0

@Barmar Вторая работала Кроме того, я пробовал 'test()' но дал мне проблемы, поэтому вместо этого использовал 'match()'. – iwatakeshi

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