通过与javascript中数组的单词进行比较来连接字符串的单词
concatenate words of a string by comparing with words of an array in javascript
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Glue words</title>
</head>
<body>
<textarea rows="20" cols="50" id="textbase">
Write text to fix after. je suis gen til l ol
</textarea>
<br>
<button type="button" onclick="gluefct()">Tokenize</button>
</body>
</html>
JS:
function gluefct() {
var space = " ";
var glueArray = ["jesuis", "gentil", "lol"];
var stringBase = document.getElementById("textbase").value;
var newString = "";
for (gluewords in glueArray) {
var arrayofstring = stringBase.split(" ");
var numberelement = arrayofstring.length;
var i = 0;
while (i < numberelement) {
var motactuel = arrayofstring[i];
var n = i;
while (motactuel.length < gluewords.length) {
n = n+1;
motactuel = motactuel + arrayofstring[n];
}
if (motactuel == gluewords) {
newString = newString + motactuel + space;
i = n+1;
}
else {
newString = newString + arrayofstring[i] + space;
i = i + 1;
}
}
stringBase = newString;
newString = "";
}
document.getElementById("textbase").value = stringBase;
}
基本上,我要做的是粘贴字符串中的单词,这些单词是通过检查字符串数组中的完整单词而分离的。
例如:
这是我的阵列:
var glueArray = ["jesuis", "gentil", "lol"];
这是我的字符串:
"je suis gen til lo l et voilà"
这应该是函数的结果:
"jesuis gentil lol et voilà"
我看不出我的代码有什么问题。有人能帮忙吗?
您可以执行以下操作;
var reference = ["jesuis", "gentil", "lol"],
str = "je su is gen til lo l et voilà",
result = str.split(/'s+/)
.reduce((p,c,i,a) => { var testStr = p[p.length-1] + c;
reference.some(s => s.indexOf(testStr) !== -1) ? p[p.length-1] = testStr
: p.push(c);
return p;
},[""])
.join(" ");
console.log(result);
它首先获取str,并通过使用空白作为分隔符将其拆分为一个数组。
在reduce中,我们将逐个获取每个单词(c
(,并将其与前一个单词(p[p.length-1]
(连接以生成测试字符串(testStr
(。
如果在reference
数组的项中找到testStr
,我们将用它的"与下一个单词连接"版本替换p
数组中的最后一个项。如果在reference
数组的项中找不到testStr
,我们将把当前字(c
(推送到p
数组。并返回p
进行下一个转弯。
我不确定您的操作方式是否是最佳,但您的代码只有一个小问题。您使用的是glueArray的散列,这意味着您将键值0分配给"jesuis",将键值1分配给"gentil"等。当您使用for循环遍历数组时,您得到的是索引值,而不是单词。我建议这个小的解决方案,它似乎有效。
//your code before
for (glueIndice in glueArray) {
var gluewords = glueArray[glueIndice];
var arrayofstring = stringBase.split(" ");
//your code after
相关文章:
- 比较从函数和生成的日期对象
- 如何使用 node.js 比较两个 json 数组
- jQuery自定义验证比较多个输入的序列
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 如何使用密码检测网络中的状态连接
- 反向字符串比较
- 如何处理node.js节点mongodb中的连接和查询队列
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- 通过JSON&比较时间
- 将DOM节点值与字符串Javascript进行比较
- Twilio-显示所有连接参与者的远程参与者视频
- 操作放置在画布上的元素之间的连接
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- jQuery UI可排序-多连接列表拖动
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 如何使用offer/answer交换来自两个对等连接的流
- 将数字与 opeartor 连接起来,以便在 javascript 中进行比较
- 角度,比较 2 个对象并替换(可能连接?
- 连接变量以与变量进行比较
- 通过与javascript中数组的单词进行比较来连接字符串的单词