Tireleme işlemini kaldırın


15

Yeni bir mücadelesi zamanı ! Çeşitli belge biçimleri arasında kopya yapıştırma yaparken sık karşılaşılan bir sorundur: tireleme. Sola hizalı bir mizanpajın düzensizliğini azaltırken ya da haklı bir mizanpajdaki aralığı boşaltırken, PDF'niz düzgün bir şekilde oluşturulmadığında ve mizanpajdaki tireleri koruyarak tam bir acıdır ve kopyalanan metninizin düzenlenmesini veya yeniden akıtılmasını zorlaştırır.

Neyse ki, orada sayısız kendi kendine yardım kitabına inanacaksak, bir meydan okuma olarak görürseniz hiçbir şey sorun değildir. Bu kendi kendine yardım kitaplarının PPCG'ye atıfta bulunmadan istisnasız olduğuna inanıyorum. Göreviniz, herhangi bir metin düzenleyicisine yapıştırmaya hazır olması için bir metinden rahatsız edici tireleme ve satır kırıklarını kaldırmaktır.

Sorun Açıklaması

Geçerli olduğunda tireleme ve satır sonlarını kaldıran bir program veya işlev yazacaksınız. Giriş , bir dize olacaktır stdin(ya da en yakın alternatif) veya bir fonksiyonu girdi olarak kullanılmaktadır. Çıkış (açık stdoutya da en yakın alternatif ya da fonksiyon çıkış) 'düzeltilmiş' metni olacaktır. Bu metin doğrudan kopyalanabilir olmalıdır . Bu, öndeki veya sondaki çıkışın TAMAM olduğu, ancak düzeltilmiş metninizin yarısında ek çıktı (örneğin, her satırdaki öndeki boşluklar) olmadığı anlamına gelir .

En temel durum aşağıdaki gibidir (not: sondaki boşluklar yok)

Lorem ipsum dolor sit amet, con-
sectetur adipiscing elit. Morbi
lacinia nisi sed mauris rhoncus.

Rahatsız edici kısa çizgi ve satır kesmeleri, elde etmek için çıkarılmalıdır.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus.

Ancak, birkaç istisna göz önünde bulundurulmalıdır.

  • Çift satırsonu paragraf sonunu belirtir ve saklanmalıdır.
  • Düzgün isimler ve isimler, zaten bir tire (örneğin Navier-Stokes denklemleri) içermedikçe iki satır boyunca asla kesilmez. Satır kesmesi kaldırılmalı, ancak kısa çizgi korunmalıdır. Bu vakalar yalnızca ilk harf büyük yazılarak belirlenebilir.
  • Bazen tire, bir kelime grubunu belirtir (örneğin on dokuzuncu ve yirminci yüzyıl). Bu iki satırda gerçekleştiğinde, bu bir sonraki satırda önde gelen boşlukla gösterilir.

Bir örnek: (bu örnekte ifade edilen görüşler kurgusaldır ve yazarın görüşünü yansıtmaz; Runge-Kutta-Fehlberg yönteminin muhalifleri de bu zorluğa katılabilirler)

Differential equations can
be solved with the Runge-Kutta-
Fehlberg method.

Developed in the nineteenth-
 or twentieth century, this
method is completely FANTAS-
TIC.

Olacak

Differential equations can be solved with the Runge-Kutta-Fehlberg method. 

Developed in the nineteenth- or twentieth century, this method is completely FANTASTIC. 

Çizgi satırları tercihinize bağlı olarak ya \nda \r\nASCII kod noktası olabilir ve kısa çizgi basit bir ASCII'dir -(eksi işareti). UTF-8 desteği gerekli değildir. Bu zorluk , bu yüzden en kısa kod kazanır.

Yanıtlar:


9

Retina , 58 bayt

(?<!\n)\n(?!\n)
<space>
- (?! |[A-Z][a-z])| (?= )|(?<=-) (?=[A-Z])
<empty>

<space>kendi çizgisinde tek bir boşluğu ve <empty>boş bir takip çizgisini temsil eder. Sayma amacıyla, her satır ayrı bir dosyaya gider ve \nbunların yerine gerçek satır besleme karakterleri gelir. Kolaylık sağlamak için yukarıdakilerin tümünü tek bir dosyaya koyabilir ve -sbayrakla çalıştırabilirsiniz .

Eminim bunu yapmanın daha kısa bir yolu var, bu yüzden golf yapana kadar bir açıklama bekleyeceğim.


Aslında
Retina'da bununla

2

GNU Sed, 68

Puan, -zriletilen seçenekler için +2 içerir sed.

s/\n\n/:/g
s/-\n([A-Z][a-z])/-\1/g
s/-\n /- /g
s/-\n//g
y/\n:/ \n/

Giriş akışında herhangi bir :karakter bulunmadığını varsayar . Bu kabul edilemezse, :koddaki "ler" yazdırılamayan başka bir ASCII karakteriyle değiştirilebilir, örneğin 0x7 BEL.


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.