Aquí uso editor.setValue() para representar una cadena en el editor, el resultado en la vista de representación fue correcto
Pero cuando uso editor.getValue() nuevamente e imprimo la longitud de la cadena de resultados, obtuve un resultado inesperado.
Aquí está el código.
var value = `asfdasfsa\n\nasdfasdfasdfal;kl;'k \r\n \r\n \r\nk 'a\r\n skd \r\na\r\nd \r\n \r\n sas\r\n dffa\r\n sd\r\n fsd\r\nf\r\n sfasfdasfasfdasdffasfaf\n\n fa ljjflkajl\n\n false\n\n\r\n\n A\r\n jpakfafafafaffaffaffafafewfwe\n `; console.log(value.length); // 280 var editor = monaco.editor.create(document.getElementById('container'), { value: value, language: 'javascript', lineNumbers: 'off', roundedSelection: false, scrollBeyondLastLine: false, readOnly: false, theme: 'vs-dark' }); console.log(editor.getValue().length) // 290Esta pregunta me ha estado molestando durante mucho tiempo y todavía no he encontrado la respuesta.
Alguien puede ayudar a responder esta pregunta ah, muchas gracias~~
Parece que la diferencia entre 280 y 290 se debe a que Monaco está agregando \r antes de cualquier \n en su cadena que aún no tiene \r (por lo que está normalizando efectivamente todos los caracteres de final de línea en la cadena). Si cambia su último archivo console.log a console.log(JSON.stringify(editor.getValue()), editor.getValue().length) verá cómo ha cambiado el valor y se han agregado algunos \r adicionales .
Este comentario sugiere que Monaco toma la cadena de entrada y la divide en líneas (buscando \r\n o \r o \n ). El valor de editor.getValue() devolverá las líneas individuales, unidas por el mismo separador de línea que se usó cuando se creó el editor, por lo tanto, un recuento de caracteres diferente en comparación con la cadena de entrada.
Si pega el siguiente código en Monaco Playground , verá que agrega \r adicionales y, por lo tanto, la cadena devuelta por el editor ( editor.getValue() ) tiene 2 caracteres más que el valor proporcionado ( value ):
var value = `'line 1'\n\'line 2'\r\r\n'line 3'`; console.log(JSON.stringify(value), value.length); // "'line 1'\n'line 2'\r\r\n'line 3'" 28 var editor = monaco.editor.create(document.getElementById('container'), { value: value, language: 'javascript', lineNumbers: 'off', roundedSelection: false, scrollBeyondLastLine: false, readOnly: false, theme: 'vs-dark' }); console.log(JSON.stringify(editor.getValue()), editor.getValue().length) // "'line 1'\r\n'line 2'\r\n\r\n'line 3'" 30