web-dev-qa-db-ja.com

段落の最初の行の後の文字列を切り取る方法

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

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...
28
Zhen
var firstLine = theString.split('\n')[0];
63
Tomalak

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

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

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

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

制限パラメーターの詳細例:MDNドキュメント

33
Wilt

何らかの種類の自動折り返しではなく、実際の行が返される場合は、これを行うことができます。

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

http://jsfiddle.net/f6uBT/

11
Alex Turpin
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
2
ujeenator

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

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

1
Nick Perkins

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

string.split(セパレータ、[制限])

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

1
Davido