Rumah  >  Soal Jawab  >  teks badan

Tambahkan pemisah baris selepas dua syarat dipenuhi: tidak lebih daripada aksara "x" dan berakhir dengan koma atau noktah

Saya sedang membuat projek kecil.

Matlamat projek ini adalah untuk menanggalkan pemformatan (ruang berganda, nombor dan baris baharu) dan kemudian mengeluarkan nilai dengan pemisah baris setiap aksara "x", tetapi pastikan ia berakhir dengan koma atau noktah.

Sebagai contoh...jika saya menetapkan had aksara kepada 50 (selepas "l" dalam "sehingga"), saya mahu ia kelihatan seperti ini. Ambil perhatian bahawa contoh lebih mengutamakan tanda baca berbanding had aksara, tetapi ia tidak akan menambah baris baharu melainkan anda sekurang-kurangnya hampir dengan had aksara (saya menambah koma tambahan untuk menerangkan lebih lanjut):

“Musang coklat yang tangkas melompat ke atas anjing malas itu,

Sehingga anjing tertidur. ”

bukannya (had watak):

“Musang coklat yang tangkas melompat ke atas anjing malas itu sehingga

Anjing sedang tidur. ”

atau (tanda baca):

"Cepat,

Musang coklat melompat ke atas anjing malas,

Sampai anjing tu,

Tidur. ”

Jika anda mahu kod semasa saya (mengalih keluar ruang berganda, nombor dan baris baharu) berfungsi...

<script>
function printText() {
    var inputValue = document.getElementById("paste-text").value;

    function editText() {
        inputValue = inputValue.replace(/(\r\n|\n|\r)/g, ' ');
        inputValue = inputValue.replace(/[0-9]/gm, ' ');
        inputValue = inputValue.replace(/(\s\s\s\s)/gm, ' ');
        inputValue = inputValue.replace(/(\s\s)/gm, ' ');
        inputValue = inputValue.trim();
        return inputValue;
    }

    if (inputValue.length > 0) {
        document.getElementById("text-output").innerText = editText();
        document.getElementById("edit-text-output").classList.add("showEdited");
    } 
}
</script>

<section>
    <div class="edit-text-container">
        <div class="edit-text-input">
            <div class="edit-text-paste">
                <h3>Paste Text</h3>
                <div class="edit-text-input-area">
                    <textarea name="paste-text" id="paste-text" rows="6" placeholder="Paste Text Here"></textarea>
                </div>
                <input type="submit" value="Remove Formatting" onclick="printText()">
            </div>
        </div>
        <div id="edit-text-output">
            <h3>Your <i>edited</i> Text</h3>
            <div class="edit-text-output-area">
                <textarea readonly id="text-output" rows="6"></textarea>
            </div>
        </div>
    </div>
</section>

<style>
textarea {
    margin:0;
    width:100%;
    padding:16px; }

#edit-text-output {
    height:0px;
    overflow:hidden;
    opacity:0;
    transition: all 0.5s;}

.showEdited {
    height:185px!important;
    opacity:1!important; }

.edit-text-container {
    justify-content:center;
    text-align:center; }

input[type=submit] {
    margin-top:16px; }
</style>

Sekali lagi, ini adalah projek peribadi, jadi jangan tergesa-gesa dalam penyelesaian / jika tidak boleh, tidak mengapa.

Saya cuba melaksanakan penyataan asas if/else melalui Javascript tanpa berjaya. Saya mempunyai pemahaman asas tentang jQuery dan Javascript, jadi saya mungkin terhad oleh kekurangan pengetahuan saya.

Semasa mencari penyelesaian, saya terfikir cara membuat baris baharu pada had aksara dan baris baharu pada tanda baca, tetapi atas sebab tertentu saya tidak dapat mengetahui cara membuat baris baharu pada tanda baca Ciri kegemaran .

P粉478835592P粉478835592179 hari yang lalu296

membalas semua(1)saya akan balas

  • P粉210405394

    P粉2104053942024-04-04 07:32:07

    Sebelum menulis bahagian kod seterusnya, pastikan keperluan anda jelas

    Pada masa ini, ini bertentangan secara dalaman.

    Terdapat beberapa masalah dengan penerangan permintaan anda:

    1. Saya rasa anda mahu rehat baris untuk menyatakan perkataan, bukan? Tetapi anda belum menyebut perkara ini lagi.

    2. Apa yang berlaku jika perkataan itu lebih panjang daripada 50 aksara?

    3. Pernyataan "pastikan" bercanggah dengan kemungkinan terdapat 50 aksara tanpa koma atau noktah.

    Adakah anda maksudkan setiap baris mestilah tidak lebih daripada 50 aksara? Jika perkataan lebih panjang daripada 50 aksara, ia mesti dipecahkan. [Fikirkan tentang perkara yang anda mahu berlaku jika perkataan 50 aksara datang tepat sebelum koma: adakah anda mahu koma dibalut atau pemisahan perkataan, atau memanjangkan baris kepada 51 aksara. Jika anda mahu yang terakhir, anda perlu kata semula peraturan ini. ]

    Saya syorkan senaraikan keperluan seperti ini:

    1. Mulakan dengan semua teks dalam input dan rentetan kosong sebagai output.
    2. Bina satu baris seperti berikut: Cari ruang terakhir dalam 50 aksara pertama input
    3. Jika terdapat ruang seperti ini: Adakah terdapat koma atau noktah dalam teks pertama?
      • Jika ya, cari koma atau noktah terakhir dan potong teks di sana.
      • Jika tidak, potong sahaja ruang terakhir.
    4. Jika tiada ruang seperti ini: anda mempunyai perkataan, atau perkataan+tanda baca, ia terlalu panjang. (Nyatakan perkara yang anda mahu lakukan di sini: cth. potong perkataan, benarkan garisan dilanjutkan, dsb.)
    5. Selepas langkah 2,3 dan 4, anda akan membentuk baris teks. Tambahkannya pada output dan keluarkannya dari input.
    6. Ulang langkah 2-5 sehingga semuanya selesai.

    Jika perkara di atas adalah yang anda mahu capai, maka ia adalah asas yang baik untuk menulis kod

    Kuncinya ialah mengetahui apa yang anda mahukan. Jika anda boleh menyatakan ini secara eksplisit, anda biasanya boleh mengekodkannya dengan mudah. Masalahnya ialah dalam dunia bukan pengaturcaraan, kebanyakan penerangan orang adalah kabur dan kami tidak menyedarinya sehingga kami mula menulis kod.

    balas
    0
  • Batalbalas