如何在javascript中的N个字符计数后插入新行
How to insert new line after N char count in javascript?
我有一个字符串,其中可能有新行'''n'字符。现在我想在该字符串中每4个(或n个(字符后插入新行'''n]。
例如:
1(输入:"我是无名氏。">
输出:"我是John">
在上面的例子中,在包含空格的4个字符后插入"''n">
2(输入:"我是无名氏">
输出:"I''nam J''nohn''nDo">
在上面的例子中,在字符串中已经存在的第一个"''n"之后的4个字符后插入空格
3(输入:12345''n67890
输出:1234''n5''n6789''n0
4(输入:"1234''n56''n78901">
输出:"1234''n56''n7890''n1">
到目前为止,我已经创建了一个函数,它在每4个字符后插入'''n',但如果它已经存在于原始字符串中,则不考虑'''n'。
function addNewlines(str) {
if (str.length >= 4) {
var result = '';
while (str.length > 0) {
result += str.substring(0, 4) + ''n';
str = str.substring(4);
}
return result;
}
return str;
}
我在每次按键时都调用这个函数,并传递原始字符串,获得输出并进一步使用它。我希望你能理解我在这里的意思。它应该保留以前插入的新行。
让我知道我可以进一步解释。还有更多的例子。
以下是我对所需内容的最佳猜测:
function addNewLines (str) {
return str.replace (/(?!$|'n)([^'n]{4}(?!'n))/g, '$1'n');
}
一些测试字符串及其结果:
"I am John Doe.", -> "I am'n Joh'nn Do'ne."
"I'nam John Doe", -> "I'nam J'nohn 'nDoe"
"12345'n67890", -> "1234'n5'n6789'n0"
"1234'n56'n78901", -> "1234'n56'n7890'n1"
"ABCD'nEFGH'nIJKL", -> "ABCD'nEFGH'nIJKL'n"
"1234", -> "1234'n"
"12341234" -> "1234'n1234'n"
对于那些正则表达式很神秘的人来说,这里有一个分解:
---------------------------- (?! Check that following character(s) are not
| ------------------------- $|'n Beginning of string or a newline character
| | --------------------- )
| | | -------------------- ( Start of capture group 1
| | || ------------------ [^'n] Any single character other than newline
| | || | -------------- {4} Previous element repeated exactly 4 times
| | || | | ----------- (?! Check that following character(s) are not
| | || | | | --------- 'n a newline
| | || | | | | ------- )
| | || | | | | |------ ) End of capture group 1
| | || | | | | || ---- /g in replace causes all matches to be processed
| | || | | | | || |
/(?!$|'n)([^'n]{4}(?!'n))/g
function parseInput(str, char, length){
var split = str.split(char),
regex = RegExp('(.{' + length + '})','g');
split[split.length-1] = split[split.length - 1].replace(regex, '$1' + char);
return split.join(char);
}
console.log(parseInput("I am John Doe.", "'n", 4));
// output = "I am'n Joh'nn Do'ne."
- 用"''n"str.Split("''n"(拆分字符串。得到一个字符串数组
- 执行额外的解析和操作,检查元素长度并将结果放入新数组results
- 使用results.Join("''n"(连接字符串
如果您避免在结果元素中附加或前置"''n",这也将删除"''n"个重复项。
这是我的代码:
function ngram_insert (n, ins, input)
{
var output = "";
var i = 0;
while (i < strlen(input))
{
if (i > 0 && i % n == 0)
{
output += ins;
}
output += input[i];
i++;
}
return output;
}
测试:
var output = ngram_insert (3, "'n", "This is a test.");
function f(n, ins, str) {
if (str.length == 0)
return "";
var i = str.indexOf("'n"), len = str.length, newStr;
if (i == -1) {
i = 1;
newStr = str[0];
}
else {
newStr = str.substring(0, i + 1);
}
var k = 1;
while (k + i < len) {
newStr += str[k + i];
if (k % n == 0) {
newStr += ins;
}
k++;
}
return newStr;
}
调用f(4, "'n", "I'nam John Doe");
返回"I'nam J'nohn 'nDoe"
相关文章:
- 使用Ember.js将新行动态插入到Table上下文中
- 使用javascript(IE bug?)在文本区域插入新行
- Shilft + Enter 而不插入新行
- JQuery 数据表添加新行,如果该行已经存在,请将其删除并为该 ID 插入新行
- 使用 rowIndex 在单击的行下方插入新行
- 如何使用javascript或jquery创建tr的克隆并在新行中插入数据
- 在html中找到指定字符串后动态插入新行
- 如何在7个字母/字母表/数字和新行中的新字母后的键向上插入分隔符-Jquery
- 在两个单词后插入新行
- 在数组中每隔x个元素插入新行
- 剑道UI网格内联-在网格上的特定位置插入新行
- 如何在javascript中的N个字符计数后插入新行
- 单击鼠标即可从HTML表中删除旧行并插入新行
- 使用远程模型的qooxdoo表,在UI上插入新行并在服务器上更新
- 动态插入新行使用javascript,但如何保存这些多行在php/mysql
- 在插入符号处插入文本-插入新行和制表符空格
- 如何在最后一个表格行上插入新行
- 用Javascript插入新行(rowspan)
- 在Javascript中插入新行,隐藏列
- 在文本框中,当我按ENTER提交表单时,当我按shift+ENTER插入新行