请帮助我将两个句子分成一系列单词和字符并单独显示。
我的输入字符串是这样的:
如果你没有哭,我会给你糖果。然后我会给你 自制蛋糕。
到目前为止我所做的事情如下:
$(function() {
generateWords();
function generateWords() {
$("#splitedWords").html("");
var Input = "If you didn't cry, I will give you sweets. Then I will give you home-made cakes.";
var outputArray = Input.split(/\s+/); // for spliting each word
// for printing the sorted words inside a button
for (var i = 0; i < outputArray.length; i++) {
$("#splitedWords").append($('<span>' + outputArray[i] + '</span><br/>'));
}
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
</head>
<body>
<h4>Input</h4>
<p>If you didn't cry, I will give you sweets. Then I will give you home-made cakes.</p>
<h4>O/P required <small>( Want to split words, dot, comma, hyphen, semicolon etc into an array)</small></h4>
<p>
var outputArray = [ "If", "you", "didn't", "cry", ",", "I", "will", "give", "you", "sweets", ".", "Then", "I", "will", "give", "you", "home-made", "cakes", "." ];
</p>
<h4>Actual O/P</h4>
<p id="splitedWords"></p>
</body>
</html>
我是在正确的方式吗?任何帮助表示赞赏:)
答案 0 :(得分:0)
您尝试做的是将文字拆分为令牌。如果您搜索,您将找到解决此问题的无限解决方案,因为这是大多数语言解析器为进一步分析文本所做的工作。我强烈建议这样做,这是一些有用的东西。
你可以用很多方法来做,正则表达式是一个,但不是最容易的。
[!#%&\'*+,\-./:;<=>?@\\\^_\`|~](?!\w)|[\"\)\(\]\[{}]|[^\s]*?(?=[!\"\#%&\'()*+,\-./:;<=>?@[\\\]^_\`{|}~]?(?:\s|$))
我现场提出的所有匹配是你所有的令牌,如HERE所示,只需将它们放入数组即可。
array = yourstring.match(/[!#%&\'*+,\-./:;<=>?@\\\^_\`|~](?!\w)|[\"\)\(\]\[{}]|[^\s]*?(?=[!\"\#%&\'()*+,\-./:;<=>?@[\\\]^_\`{|}~]?(?:\s|$))/)
应提供您正在寻找的结果。