javascript - Bir string'den tüm satır sonlarını nasıl kaldırılır
Bir textarea içinde bir metnim var ve onu .value niteliğini kullanarak okuyorum.
Şimdi .replace ile düzenli ifade kullanarak metnimden tüm satır sonlarını (Enter tuşuna basıldığında oluşan karakter) kaldırmak istiyorum, ama bir satır sonunu regex içinde nasıl gösterebilirim?
Eğer bu mümkün değilse, başka bir yol var mı?
Cevap #1
Bir satır sonunu bulma şekliniz, işletim sistemi kodlamalarına göre değişir. Windows \n kullanırken, Linux sadece \n kullanır ve Apple kullanır.
Bunu JavaScript satır sonlarında buldum:
someText = someText.replace(/(\r\n|\n|\r)/gm, "");
Bu, her türlü satır sonunu kaldırmalıdır.
HTML ile çalışırken satır sonları arasında sıkça bulunan sekme karakterlerini de kaldırmak isterseniz, bu ifadeyi kullanabilirsiniz:
someText = someText.replace(/[\n\r\t]/gm, "");
Cevap #2
Satır sonları (daha iyi: yeni satırlar) Carriage Return (CR, \r, eski Mac’lerde), Line Feed (LF, \n, Linux dahil Unixlerde) veya CR’nin LF ile takip edilmesi (\r\n, WinDOS’ta) olabilir. (Başka bir cevabın aksine, bunun karakter kodlamasıyla hiçbir ilgisi yoktur.)
Bu nedenle, tüm varyantlarla eşleşen en verimli RegExp literal şudur
/\r?\n|\r/
Bir dizideki tüm yeni satırları eşleştirmek istiyorsanız, küresel bir eşleşme kullanın,
/\r?\n|\r/g
sırasıyla. Ardından, birkaç başka yanıtta önerildiği gibi replace yöntemine devam edin. (Muhtemelen yeni satırları kaldırmak istemezsiniz, ancak örneğin boşluk karakteri gibi başka boşluklarla değiştirerek kelimelerin bütünlüğünü korumak istersiniz.)
Cevap #3
var str = " \n this is a string \n"
console.log(str);
console.log(str.trim());String.trim(), dizelerin başındaki ve sonundaki boşlukları... yeni satırlar dahil olmak üzere kaldırır.
const myString = " \n Hey! \n I'm a string!!! \n\n";
const trimmedString = myString.trim();
console.log(trimmedString);
// outputs: "Hey! \n I'm a string!!!"
İşte bir örnek fiddle: http://jsfiddle.net/BLs8u/
NOT! Bu yalnızca dizenin başını ve sonunu kırpar, dizenin ortasındaki satır sonlarını veya boşlukları değil.
Cevap #4
Bir regex'te yeni satırlar için \n ve satır başları için \r kullanabilirsiniz.
var str2 = str.replace(/\n|\r/g, "");
Farklı işletim sistemleri farklı satır sonları kullanır ve bunlar \n ve \r karışımlarını içerir. Bu regex bunların hepsini değiştirecektir.
Cevap #5
En basit çözüm şun olurdu:
let str = '\t\n\r this \n \t \r is \r a \n test \t \r \n';
str = str.replace(/\s+/g, ' ').trim();
console.log(str); // logs: "this is a test"
.replace() ile /\s+/g düzenli ifadesi, bütün stringdeki beyaz boşluk karakterlerinin tüm gruplarını tek bir boşluk olarak değiştirir, ardından metnin başındaki ve sonundaki tüm fazla beyaz boşlukları kaldırmak için sonucu .trim() ile temizleriz.
Boşluk karakterleri olarak kabul edilir:
[ \f\n\r\t\v\u00a0\u1680\0-\a\u2028\u2029\u202f\u205f\u3000\ufeff]
Cevap #6
Tüm kontrol karakterlerini, CR ve LF dahil, kaldırmak istiyorsanız, bunu kullanabilirsiniz:
myString.replace(/[^\x20-\x7E]/gmi, "")
Tüm yazdırılamayan karakterleri kaldıracaktır. Bunlar ASCII HEX alanı 0x20-0x7E içinde OLMAYAN tüm karakterlerdir. Gerekirse HEX aralığını değiştirmekten çekinmeyin.
Cevap #7
Bu, satır sonunu boşlukla değiştirecektir.
someText = someText.replace(/(\r\n|\n|\r)/gm,"");
Bu makaleyi daha fazla okuyun.
Cevap #8
var str = "bar\r\nbaz\nfoo";
str.replace(/[\r\n]/g, '');
>> "barbazfoo"
Cevap #9
Yeni satır karakterlerini kaldırmak için bunu kullanın:
yourString.replace(/\r?\n?/g, '')
Sonra baştaki ve sondaki boşlukları kaldırmak için dizgenizi kırpabilirsiniz:
yourString.trim()
Cevap #10
Bu regex'i genellikle json içindeki (html) stringler için kullanırım:
replace(/[\n\r\t\s]+/g, ' ')Dizeler, bir CMS'in html düzenleyicisinden veya bir i18n PHP'den gelir. Yaygın senaryolar şunlardır:
- lorem(.,)\nipsum
- lorem(.,)\n ipsum
- lorem(.,)\n
ipsum
- lorem ipsum
- lorem\n\nipsum
- ... many others with mixed whitespaces (\t\s) and even \r
Regex bu çirkin şeylerden kaçınır:
lorem\nipsum => loremipsum
lorem,\nipsum => lorem,ipsum
lorem,\n\nipsum => lorem, ipsum
...
Elbette tüm kullanım durumları için değil ve en hızlısı değil, ama çoğu metin alanı ve web siteleri ya da web uygulamaları için yeterli.
Cevap #11
ALTTAKİ FONKSİYONU KULLANIN VE HAYATINIZI KOLAYLAŞTIRIN
En kolay yaklaşım, dizideki yeni satırları tespit etmek ve değiştirmek için düzenli ifadeleri kullanmaktır. Bu durumda, bizim durumumuzda boş bir dize olan ile değiştirmek için dize ile birlikte replace fonksiyonunu kullanıyoruz.
function remove_linebreaks( var message ) {
return message.replace( /[\r\n]+/gm, "" );
}
Yukarıdaki ifadede g ve m global ve çok satırlı bayraklar için kullanılır
Cevap #12
Basitçe text.replace(/\n/g, " ") kullanarak yeni satırı kaldırabiliriz
const text = 'Students next year\n GO \n For Trip \n';
console.log("Original : ", text);
var removed_new_line = text.replace(/\n/g, " ");
console.log("New : ", removed_new_line);