以下に示すような文字列があります:
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...
var firstLine = theString.split('\n')[0];
彼の答えは正しいですが、本当に最初の行だけに一致させたい場合は、オプションの2番目のlimit
パラメーターを渡すと便利です。このように、最初の一致が返される前に、長い文字列(数千行)が最後まで分割されるのを防ぎます。
オプションのlimit
を1
に設定すると、最初の一致が見つかったらすぐに結果を返すようにメソッドに指示し、結果としてパフォーマンスが向上します。
var firstLine = theString.split('\n', 1)[0];
制限パラメーターの詳細例:MDNドキュメント
何らかの種類の自動折り返しではなく、実際の行が返される場合は、これを行うことができます。
str = str.substr(0, str.indexOf("\n"));
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
「ラップされたテキスト」についての興味深い議論...たぶん、それはJavascriptの問題というよりもHTMLの問題のようです...
たぶんあなたが本当にしたいのは、HTML要素の高さを制限し、「overflow = hidden」を設定することです。次に、1行に収まる限り表示し、残りを非表示にします。 (ただし、最後に小さな「...」は表示されません)
この関数を使用する必要があります
string.split(セパレータ、[制限])
separator-分割する文字["。"または\ r\n ...] limit-オプション、最大文字数を制限するint