我的输入是:
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
答案 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>