>

선택할 때 텍스트를 교체해야하는 텍스트가 있습니다.

여기서 요구 사항은 공백이 포함 된 문자를 바꾼 후에 공백이 동일해야합니다.

자바 스크립트 :

   function getSel() {
    // obtain the object reference for the textarea>
    var txtarea = document.getElementById("mytextarea");
    // obtain the index of the first selected character
    var start = txtarea.selectionStart;
    // obtain the index of the last selected character
    var finish = txtarea.selectionEnd;
    //obtain all Text
    var allText = txtarea.value;
    // obtain the selected text
    var sel = Array(finish - start).join("*");
    //append te text;
    var newText = allText.substring(0, start) + sel + allText.substring(finish, allText.length);
    txtarea.value = newText;
    $('#newpost').offset({ top: 0, left: 0 }).hide();
}
$(document).ready(function () {
    var position;
    $('#newpost').hide();
    $('#mytextarea').on('select', function (e) {
        $('#newpost').offset(position).show();
        var txtarea = document.getElementById("mytextarea");
        var start = txtarea.selectionStart;
        var finish = txtarea.selectionEnd;
        $('#newpost p').text(Array(finish - start).join("*"));
    }).on('mousedown', function (e) {
        position = { top: e.pageY-5, left: e.pageX};
    });
    $('#newpost').hide();
});

내 플러 커

는 다음과 같습니다.

위의 이미지와 같이 출력되고 있지만 예상 출력에서는 공간을 별표로 바꾸면 안됩니다.

  • 답변 # 1

    string.replace 사용  대신 다음을 시도하십시오 :

    console.log('g2ggg gggGG'.replace(/[a-zA-Z0-9]/g, '*'))
    
    

    모든 문자열 조작 논리는 한 줄로만됩니다 :

    newText = allText.replace(/[a-zA-Z0-9]/g, '*')
    
    

  • 답변 # 2

    정규식을 잘 못해서 for-loop를 사용했지만 여전히 도움이 될 것입니다.

    $(document).ready(function () {
        $('#mytextarea').on('select', function (e) {
            var $output = $("#output");
            var $txtarea = $("#mytextarea");
            var start = $txtarea[0].selectionStart;
            var finish = $txtarea[0].selectionEnd;
            var subtext = $txtarea.text().substr(start, finish); 
            var out = "";
            for (var i = 0; i < subtext.length; i++) {
                var char = subtext[i];
                if (char == " ") {
                    out += " ";
                } else {
                    out += "*";
                }
            }
            $output.text(out);     
        });
    });
    
    

    코드에 따라이 바이올린에서 실제 예제를 볼 수 있습니다 :

관련 자료

  • 이전 java - Blob 암호화에서 AbstractMethod 오류를 해결하는 방법?
  • 다음 amazon ses - AWS SES Query API GET 요청을 사용하려고합니다 AWS SES의 서비스 이름은 무엇입니까?