如何在JavaScript中的每个句子之前插入一个空格?

时间:2016-06-15 17:06:02

标签: javascript jquery

我的输入是:

hello world one
hello world two
hello world three

到目前为止我已尝试过:

  $('.insertSpace').click(function(event) {
    var textareaInput=$('.textareaInput').val();
    var myString = ' ' + textareaInput.split();
    $('.textareaInput').val(myString);
    //console.log(myString);
  });

它只是第一句话。我想在每个句子中插入空格。我的代码中的错误在哪里?

它的输出应如下所示:

 hello world one
 hello world two
 hello world three

4 个答案:

答案 0 :(得分:3)

如果使用m修饰符(在多行基础上匹配),则可以创建一个简单的正则表达式

function addSpaces() {
  var textarea = document.querySelector('textarea');
  textarea.value = textarea.value.replace(/^(.)/gm, ' $1');
}
<textarea id="text">
hello world one
hello world two
hello world three
</textarea>
<button onclick="addSpaces()">Add Spaces</button>

但是,如果您还想对空格进行规范化,可以将此正则表达式替换为:

.replace(/^(?!\n)(\s*)(.)/gm, ' $2');

将删除制表符或预先存在的空格,并且无论您运行该函数多少次,都只会添加1个空格。它将留下新的界限。

答案 1 :(得分:2)

var myString = textareaInput.split("\n").map(function(str){ 
  return ' ' + str;
}).join("\n");

答案 2 :(得分:1)

我认为“句子”是指。如果是这样,您可以使用带有正则表达式的replace来执行此操作。例如:

var textareaInput = $('.textareaInput').val();
var myString = " " + textareaInput.replace(/(\r?\n)/g, "$1 ");
$('.textareaInput').val(myString);

实时复制:

$('.insertSpace').click(function(event) {
  var textareaInput = $('.textareaInput').val();
  var myString = " " + textareaInput.replace(/(\r?\n)/g, "$1 ");
  $('.textareaInput').val(myString);
});
<textarea class="textareaInput" cols="20" rows="5">
hello world one
hello world two
hello world three
</textarea>
<input type="button" class="insertSpace" value="Insert Space">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

答案 3 :(得分:-1)

如果所需的结果是将文本移动/缩进到右侧,则可以使用填充:

.indent {
  /* Indent with as much you as like to */
  padding-left: 1rem; 
}
<textarea class="indent" cols="20" rows="5">
  Some text
  Hello world
  Winter's coming
</textarea>