0

分割したいアイテムの配列があるとします(これはページ用です)。

タイトルを「インテリジェントに」抽出しようとしていますが、関連する部分のみです。

また、先頭/末尾のスペースは必要ありません。

他のループの中にたくさんのループを入れずに、これをどうやってやるのかよくわかりません。

function cleanTitle(title) {
    // Extract up to first delimiter
    var delims = ['|','·','-',':'];
} 

私はjqueryを使用しています。

また、最も重要だと思う順序でdelims配列を配置します。次の配列項目に進む前にタイトル全体で最初の配列項目を検索するのではなく、文字列全体を一度に1文字ずつ実行する必要があると思います...文字列の各文字は、その配列に含まれているかどうかを確認します。そうでない場合は、次に進みます。多くのURLには、これら4つのうち3つが含まれている可能性があることを私は知っています。そうしないと、実際にはうまく機能しません。

4

3 に答える 3

1

split正規表現または文字列をパラメータとして受け入れます。ソリューションを少し冗長にすることができます。

function cleanTitle(title) {
    return title.split(/[-.|:]/)[0];
}

デモ: http: //jsfiddle.net/AlienWebguy/JkRv6/

于 2012-09-19T23:38:16.953 に答える
1

正規表現を使用して、次の作業を行うことができます。

var str = "This is a title-And the rest of the string";
var title;
var matchChar = str.match(/^(.*?)[|·\-:]/);
if (matchChar) {
    title = matchChar[1];   // "This is a title"
} else {
    title = str;
}

作業デモ: http: //jsfiddle.net/jfriend00/kxVMB/

于 2012-09-19T23:32:13.757 に答える
0

これらの答えはすべて、明白で最も洗練された解決策を無視しています(ただし、正規表現は確かにループよりも改善されています)。string.split(/^(.*?)[|·\-:]/,1) これはECMAScript1であるため、すべてのブラウザーで使用できない理由がわかりません。

構文

string.split(separator, limit)


パラメーター

パラメータ説明

separator Optional. Specifies the character, or the regular expression, to use for splitting the string. If omitted, the entire string will be returned (an array with only one item)

limit Optional. An integer that specifies the number of splits, items after the split limit will not be included in the array

于 2017-06-06T20:12:51.703 に答える