1

文字列を引数として取る関数があります。問題は、文字列が「私の名前は John Doe です。車が必要です」などの文になる可能性があることです。または、ドット表記「this.is.dot.notation」にすることもできます。正規表現についてはあまり知りませんが(それが必要な場合)、2つのタイプを分けたいと思います。

文字列が単語または文である可能性があると仮定して、文字列がオブジェクト/ドット表記であるかどうかを確認する方法はありますか? 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

これは、1 つ以上の単語文字の後にドットが続き、その後に 1 つ以上の単語文字がスペースなしで続くかどうかをチェックするだけです。ブール値だけが必要な場合は、三項を削除できます(疑問符とそれに続くすべてのもの(もちろんセミコロンは保持してください))。

function isDotNotation(str) {
  return (/[\w+]\.[\w+]/gi).test(str) ? "Dot Notation" : "Sentence";
}

これはそれを壊します: isDotNotation("Hell o.there");

したがって、これは 1 つ以上の空白をチェックする醜いものです。

function isDotNotation(str) {
  return ( (/[\w+]\.[\w+]/gi).test(str) ) && ( !(/\s+/g).test(str) ) ? "Dot Notation" : "Sentence";
}
于 2014-09-12T02:29:54.763 に答える