JavaScript'te birden fazla kod satırında bir dizeyi nasıl kırabilirim?


198

JavaScript'te yeni bir satırda olmasına rağmen sürekli olarak okunması için bir kod satırını parçalayacak bir karakter var mı?

Gibi bir şey....

1. alert ("Lütfen dosya seçin   
2. \ silmek için ");

Yanıtlar:


272

Örneğinizde, dizeyi iki parçaya ayırabilirsiniz:

alert ( "Please Select file"
 + " to delete");

Veya, bir dize olduğunda, durumunuzda olduğu gibi, @Gumbo'nun önerdiği gibi bir ters eğik çizgi kullanabilirsiniz :

alert ( "Please Select file\
 to delete");

Bu ters eğik çizgi yaklaşımının mutlaka tercih edilmediğini ve muhtemelen evrensel olarak desteklenmediğini unutmayın (Bu konuda sabit veriler bulmakta sorun yaşadım). Öyle değil de ECMA 5.1 spec .

Diğer kodlarla (tırnak içinde değil) çalışırken, satır kesmeleri yoksayılır ve mükemmel şekilde kabul edilir. Örneğin:

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}

Bir if ifadesini bölebilir misiniz?
TTT

17
Ancak otomatik noktalı virgül yerleştirme mekanizmasına dikkat edin: İşlevin sonunda bir satır ve bir sonrakinde bir "string" döndürmeye çalışın ve sonuç olarak tanımsız hale gelsin.
bazı

Bu standartlara uygun mu? Tüm uyumlu tarayıcılar bunu destekleyecek mi? Do eski tarayıcılar bunu bugün destekliyor? Bu önemli sorulardan hiçbiri, -1.
ulidtko

3
Peki ... Eğer henüz sorulmamış bir sürü yeni soru soracaksanız, bize cevaplama şansı vermelisiniz. Cevabımı tatmin edici olmayan bir varsayımla güncelledim.
Michael Haren

2
Ters eğik çizgiden sakının. Boş bırakılıncaya kadar tüm boşlukları yiyecektir. Böylece örnek "uyarır": Lütfen silmek için dosyayı seçin. Dosya ile arasındaki boşluğu istiyorsanız, ters eğik çizgiden önce koymalısınız.
jgomo3

41

Ters eğik çizgiyi satırın sonuna koyun:

alert("Please Select file\
 to delete");

Düzenleme     bu olduğunu nota sahip olmayan bir parçası ECMAScript dizeleri olarak hat sonlandırma karakterleri hiç izin verilmez:

' LineTerminator ' karakteri, ters eğik çizgi olsa bile dizgi değişmezinde görünemez \. Satır sonlandırıcı karakterinin bir dize değişmezinin dize değerinin bir parçası olmasına neden olmanın doğru yolu, \nveya gibi bir kaçış dizisi kullanmaktır \u000A.

Dize birleştirmeyi kullanmak daha iyi bir seçimdir.


    ECMAScript5'teki 2015-01-05 Dize değişmezleri belirtilen sözdizimine izin verir:

Satır sonlandırıcı karakteri , boş karakter dizisini üretmek için bir LineContinuation'un parçası dışında, dize değişmezinde görünemez . Satır sonlandırıcı karakterinin bir dize hazır bilgisinin String değerinin bir parçası olmasına neden olmanın doğru yolu, \nveya gibi bir kaçış dizisi kullanmaktır \u000A.


1
ECMAScript5 buna izin verir: " Bir satır sonlandırıcı karakteri , boş karakter dizisi üretmek için \n\u000Abir LineContinuation parçası dışında, bir dize değişmezinde görünemez . gibi bir çıkış sırasını kullanmak veya . "
Oriol

1
@Oriol Not için teşekkürler, cevabı buna göre güncelleyin!
Gumbo

1
Dosya Windows'da oluşturulmuşsa bu sorunlu mu? Diğer bir deyişle çizgiler ile sona \r\nyerine \n?
Adam Plocher

31

ECMAScript 6 şablon dizelerini sunar :

Şablon dizeleri, gömülü ifadelere izin veren dize değişmezleridir. Bunlarla birlikte çok satırlı dizeler ve dize enterpolasyon özellikleri kullanabilirsiniz.

Örneğin,

alert(`Please Select file   
to delete`);

uyaracak

Please Select file   
to delete

1
Vay harika. Bunları almak için `` klavyede SHIFT + ´ tuşlarına iki kez basın. Almanca klavyede bu tuş geri silme tuşuna yakındır.
Nadu

@Nadu Bu bir klavyeye bağlı. Benimkinin `anahtarı var. Bir değiştirici olduğu için doğrudan yazılmaz. Muhtemelen iki kez basmanız gerektiğini düşündünüz, ancak bu iki tanesini yazacak. Yalnızca bir tane yazmak için boşluk çubuğuna basın.
Oriol

Fantezi kesmeksiz çok satırlı dizelere izin vermek çok uzun sürdü ... Soru şu: Satır ayırıcılar olarak ne kullanılacaktır - sabit kodlu bir karakter veya belgenin satır sonu karakterleri?
StanE

1
`` * .Js dosyasının büyütülmesini istediğinizde `` sorun var.
Raskolnikov

1
Yine de 2018 yılının Mart ayında, küresel olarak kullanılan tarayıcıların yalnızca% 89'unun caniuse.com'a
FFirmenich


4

Not ilginç. Denenmiş:

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

Ve bu işe yaradı. Ancak, kazada !, son ters eğik çizgiden sonra bir boşluk karakteri vardı (diğer tüm ters eğik çizgiler çizginin sonunda idi). Ve bu javascript bir hataya neden oldu! Bu alanı kaldırmak hatayı düzeltti.

Bu, Cordova kullanan Android için ADT'de.


1
Günümün çoğunu bu sorunla savaşarak geçirdim ve ayrıca, teşekkürler, eğik çizgilerin herhangi birinden sonra bir boşluk karakterinin iyonik uygulamamın derlenmemesine neden olduğunu keşfettim. Teşekkür ederim!
rekordboy

1
Kimse bunun dize parçası olarak kodda herhangi bir girinti içereceğini yorumladığını inanamıyorum, böylece örnek olurSome\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
JHH

1

Sadece kullanabilirsiniz

1:  alert("Please select file" +
2:        " to delete");

Çalışmalı


0

Uzun bir dize sabitini mantıksal parçalara bölebilir ve bunları bir diziye atayabilirsiniz. Ardından join, ayırıcı olarak boş bir dize ile bir yapın.

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

Çıktı:

  1. Bu ilk bölüm .... 2. Bu ikinci kısım ..... 3. Burada bitiyor.

Bu şekilde hafif bir performans var ama kod okunabilirliği ve sürdürülebilirliği kazanıyorsunuz.


0

VSCode kullanıcıları için iyi bir çözüm , eğer bir dize birden fazla satıra bölünüyorsa soruna neden oluyorsa (uzun bir JWT jetonunu test etmek zorunda kaldım ve bir şekilde şablon değişmezlerini kullanmak hile yapmadı.)


-3

Yukarıdaki önerilerin birçoğunu denedim ancak Chrome kod denetçisinde ILLEGAL karakter uyarısı aldım. Aşağıdakiler benim için çalıştı (yalnızca Chrome'da test edildi!)

alert('stuff on line 1\\nstuff on line 2);

gibi çıkıyor ...

stuff on line 1
stuff on line 2

NOT çift ters eğik çizgi !! ... bu önemli gibi görünüyor!


-5

Kodda manuel olarak mola vermenize gerek yoktur. Sadece kırmak istediğiniz yere \ n ekleyin.

alert ("Please Select file \n to delete");

Bu uyarıyı aşağıdaki gibi gösterecektir:

Please select file 
to delete.

aşağı seçmen, u lütfen downvote nedenini söyleyebilir. Bu çözümler benim için her zaman işe yarar.
Narendra

27
Kimin ya da neden oy verdiğini bilmiyorum; ancak sadece bir tahmin: op, bir metin değişmezinin çıktıya nasıl satır sonu ekleneceğinden ziyade birden çok kod satırına nasıl genişletileceğini bilmek istedi.
Zarepheth
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.