将两个句子分成单词和字符并单独显示

时间:2015-06-25 16:01:30

标签: javascript arrays regex split

请帮助我将两个句子分成一系列单词和字符并单独显示。

我的输入字符串是这样的:

  

如果你没有哭,我会给你糖果。然后我会给你   自制蛋糕。

到目前为止我所做的事情如下:

$(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>

我是在正确的方式吗?任何帮助表示赞赏:)

1 个答案:

答案 0 :(得分:0)

您尝试做的是将文字拆分为令牌。如果您搜索,您将找到解决此问题的无限解决方案,因为这是大多数语言解析器为进一步分析文本所做的工作。我强烈建议这样做,这是一些有用的东西。

你可以用很多方法来做,正则表达式是一个,但不是最容易的。

[!#%&\'*+,\-./:;<=>?@\\\^_\`|~](?!\w)|[\"\)\(\]\[{}]|[^\s]*?(?=[!\"\#%&\'()*+,\-./:;<=>?@[\\\]^_\`{|}~]?(?:\s|$))

我现场提出的所有匹配是你所有的令牌,如HERE所示,只需将它们放入数组即可。

array = yourstring.match(/[!#%&\'*+,\-./:;<=>?@\\\^_\`|~](?!\w)|[\"\)\(\]\[{}]|[^\s]*?(?=[!\"\#%&\'()*+,\-./:;<=>?@[\\\]^_\`{|}~]?(?:\s|$))/)

应提供您正在寻找的结果。