43

以下に示すような文字列があります。

XXX:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur cursus lacus sed
justo faucibus id pellentesque nunc porttitor. Sed venenatis tempor dui, nec mattis dolor
ultrices at. Duis suscipit, dolor sed fringilla interdum, magna libero tempor quam, sed
molestie dui urna sed tellus.

制限を追加して、最初の行で文字列を切り取るにはどうすればよいですか?(javascriptを使用)。

私が期待する最終結果は次のとおりです。

XXX:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur...
4

7 に答える 7

97
var firstLine = theString.split('\n')[0];
于 2011-12-08T19:30:28.137 に答える
53

パフォーマンスを向上させるには、オプションの制限パラメーターを使用します

Tomalakの答えは正しいですが、実際に最初の行だけを一致させたい場合は、オプションの2番目のlimitパラメーターを渡すと便利です。このようにして、最初の一致が返される前に、長い文字列(数千行)が最後まで分割されるのを防ぎます。

オプションlimit1に設定すると、最初の一致が見つかったらすぐに結果を返すようにメソッドに指示し、結果としてパフォーマンスを向上させます。

var firstLine = theString.split('\n', 1)[0];

制限パラメータの詳細については、たとえばMDNドキュメントを参照してください。

于 2016-05-10T08:26:09.230 に答える
12

ある種の自動折り返しだけでなく、実際の行の戻りがある場合は、次のようにすることができます。

str = str.substr(0, str.indexOf("\n"));

http://jsfiddle.net/f6uBT/

于 2011-12-08T19:32:46.107 に答える
3
function getFirstLine(str){
    var breakIndex = str.indexOf("\n");

   // consider that there can be line without a break
    if (breakIndex === -1){
        return str;
    }

    return str.substr(0, breakIndex);
}

getFirstLine('first line\nsecond line'); // first line

getFirstLine('text without line break'); // text without line break
于 2015-05-04T15:07:24.580 に答える
1

次の関数を使用する必要があります。

string.split(separator, [limit])

区切り文字-分割する文字["。"または\r\ n ...]制限-オプション、最大文字数を制限するint

于 2011-12-08T19:36:00.510 に答える
1

「ラップされたテキスト」についての興味深い議論...多分それはjavascriptの問題というよりもHTMLの問題です...

たぶん、本当に必要なのは、HTML要素の高さを制限し、「overflow=hidden」を設定することです。次に、1行に収まる限り表示し、残りを非表示にします。(ただし、最後に小さな「...」は表示されません)

于 2014-01-31T19:14:39.567 に答える
-2
var str = document.getElementsByTagName("div")[0].innerHTML;

var firstLine = function(input,cutlength,appendtext){
    if(input.length<=cutlength)
        return input;
    return input.substr(0,cutlength) + appendtext;
}


alert(firstLine(str,50,"..."));

編集-ここにフィドルリンクがありますhttp://jsfiddle.net/a3C86/

于 2011-12-08T19:31:33.583 に答える