Heim  >  Fragen und Antworten  >  Hauptteil

Fügen Sie Zeilenumbrüche hinzu, nachdem zwei Bedingungen erfüllt sind: nicht mehr als „x“ Zeichen und endend mit einem Komma oder Punkt

Ich arbeite an einem kleinen Projekt.

Das Ziel dieses Projekts besteht darin, die Formatierung (doppelte Leerzeichen, Zahlen und Zeilenumbrüche) zu entfernen und dann den Wert mit einem Zeilenumbruch alle „x“ Zeichen auszugeben, aber sicherzustellen, dass er mit einem Komma oder Punkt endet.

Wenn ich zum Beispiel die Zeichenbeschränkung auf 50 (nach dem „l“ in „bis“) setze, möchte ich, dass es so aussieht. Beachten Sie, dass im Beispiel die Zeichensetzung Vorrang vor der Zeichenbeschränkung hat, aber keine Zeilenumbrüche hinzugefügt werden, es sei denn, Sie sind zumindest nahe an der Zeichenbeschränkung (ich habe die zusätzlichen Kommas hinzugefügt, um dies näher zu erläutern):

„Der flinke Braunfuchs sprang über den faulen Hund,

Bis der Hund einschläft.

statt (Zeichenbeschränkung):

„Der flinke Braunfuchs sprang über den faulen Hund bis

Der Hund schläft.

oder (Satzzeichen):

"Beeilen Sie sich,

Der Braunfuchs springt über den faulen Hund,

Bis zu diesem Hund,

Schlafend.

Wenn Sie möchten, dass mein aktueller Code (Entfernen von doppelten Leerzeichen, Zahlen und Zeilenumbrüchen) funktioniert ...

<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>

Auch hier handelt es sich um ein persönliches Projekt. Überstürzen Sie also nicht die Lösung. Wenn dies nicht möglich ist, ist das in Ordnung.

Ich habe erfolglos versucht, einfache if/else-Anweisungen über Javascript auszuführen. Ich verfüge über grundlegende Kenntnisse von jQuery und Javascript, daher kann es sein, dass ich durch mangelnde Kenntnisse eingeschränkt bin.

Auf der Suche nach einer Lösung habe ich herausgefunden, wie man bei Zeichenbegrenzungen einen Zeilenumbruch und bei Interpunktion einen Zeilenumbruch erstellt, aber aus irgendeinem Grund konnte ich nicht herausfinden, wie man bei Interpunktion einen Zeilenumbruch erstellt. Lieblingsfunktion.

P粉478835592P粉478835592179 Tage vor297

Antworte allen(1)Ich werde antworten

  • P粉210405394

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

    在编写下一部分代码之前,请确保您的要求明确

    目前,这是内部矛盾的。

    您的需求描述存在几个问题:

    1. 我认为您希望换行符能够表达一个单词,不是吗?但你还没有提到这一点。

    2. 如果单词长度超过 50 个字符会怎样?

    3. “确保”语句与可能存在不带逗号或句点的 50 个字符的可能性相冲突。

    您的意思是每行长度不得超过 50 个字符吗?如果单词长度超过 50 个字符,则必须将其拆分。 [考虑一下如果 50 个字符的单词就在逗号之前,您希望发生什么:您希望逗号换行还是单词拆分,或者将行延长到 51 个字符。如果您想要最后一个,则必须重新措辞此规则。]

    我建议像这样列出要求:

    1. 从输入中的所有文本开始,并以空字符串作为输出。
    2. 按如下方式构建一行:查找输入的前 50 个字符内的最后一个空格
    3. 如果有这样的空格:第一段文本中是否有逗号或句号?
      • 如果是这样,请找到最后一个逗号或句号并截断那里的文本。
      • 否则就砍掉最后一个空格。
    4. 如果没有这样的空格:您有一个单词,或单词+标点符号,那就太长了。 (在此指定您想要执行的操作:例如截断单词、允许线条延伸等)
    5. 经过步骤 2,3 和 4,您将形成一行文本。将其添加到输出中并从输入中删除它。
    6. 重复步骤 2-5,直至全部完成。

    如果上述内容是您想要完成的,那么它就是编写代码的良好基础

    关键是要清楚自己想要什么。如果您能够明确地表达这一点,那么您通常可以轻松地对其进行编码。问题在于,在非编程世界中,大多数人的描述都含糊不清,直到我们开始编写代码时我们才意识到这一点。

    Antwort
    0
  • StornierenAntwort