gpt4 book ai didi

javascript - 使用 Javascript/jQuery 将第 n 个制表符替换为字符串

转载 作者:行者123 更新时间:2023-11-30 17:01:08 25 4
gpt4 key购买 nike

我在 Excel 中有一行项目,当我将它们复制到文本区域时,我有几个制表符。我是故意用这个的。有没有办法用新行(每个)替换第 n 个制表符并为每个制表符插入一个特定的词?这是我到目前为止所拥有的http://jsfiddle.net/kjuxk7m9/

<textarea rows="10" cols="50" onblur="this.value=this.value.replace(/\t/g, '\n')">

基本上,当我在文本区域中输入以下内容时:

Item1   Item2   Item3   Item4   Item5

(项目之间是制表符),我的结果必须是:

Name1: Item1
Name2: Item2
Name3: Item3
Name4: Item4
Name5: Item5

另外,我可能有多个制表符一个接一个。我需要将它们删除,以便在用换行符替换它们后没有空行。此外,我宁愿不使用内联 javascript,即使我在示例中到目前为止已经这样做了。

谢谢!

更新:

输入文字:

Item1   Item2   Item3   Item4       item6   Item7

预期的结果是:

LastName: Item1
FirstName: Item2
PhoneNumber: Item3
Nickname: Item4
AnotherRandomCategory:
Blog: Item6
OtherDetail: Item7

Item5 实际上是我的电子表格中空单元格的示例,复制它会添加一个额外的制表符。获得上述结果后,我可以使用代码删除该行,因为该类别没有项目。 Items 是示例,它们实际上是名称、数字和其他数据。谢谢!

最佳答案

这适用于您的示例:

document.querySelector('textarea').addEventListener('paste', function() {
var self= this;
setTimeout(function() {
self.value =
self.value.split(/\t+/)
.map(function(v, index) {
return 'Name'+(index+1)+': '+v;
})
.join('\r');
},1);
});

Working Fiddle

需要超时,因为文本区域的值直到粘贴事件之后才会更新。

正文是 split 在制表符上,并使用 map 更新该数组,然后 join ed 用换行符。

正则表达式 /\t+/ 导致 split 忽略一行中的多个选项卡。

如果您更喜欢使用模糊事件,则不需要超时:

document.querySelector('textarea').addEventListener('blur', function() {
this.value =
this.value.split(/\t+/)
.map(function(v, index) {
return 'Name'+(index+1)+': '+v;
})
.join('\r');
});


根据讨论更新

下面的代码对此进行了转换: enter image description here

……进入这个:

enter image description here

document.querySelector('textarea').addEventListener('paste', function() {
var self= this;
setTimeout(function() {
var flds=['LastName',
'FirstName',
'PhoneNumber',
'Nickname',
'AnotherRandomCategory',
'Blog',
'OtherDetail'
],
order=[0, //LastName
1, //FirstName
3, //Nickname
2, //PhoneNumber
4, //AnotherRandomCategory
5, //Blog
6 //OtherDetail
]

self.value =
self.value.split(/\t/)
.map(function(v, index) {
if(v==='' || index>=flds.length) {
return '';
}
else {
return index+' '+flds[index]+': '+v+'\r';
};
})
.sort(function(a,b) {
a= order[a.split(' ')[0]];
b= order[b.split(' ')[0]];
return a-b;
})
.join('')
.replace(/\r\d+ /g,'\r')
.substr(2);
},1);
});

Working Fiddle #2

关于javascript - 使用 Javascript/jQuery 将第 n 个制表符替换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28834896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com