字符串已使用标点符号作为分隔符进行分割;如何重新组合并放回标点符号?

发布于 2024-11-10 06:06:09 字数 150 浏览 0 评论 0原文

我使用 Trie 数据结构实现了一个脏话过滤器。每个脏话都会添加到 Trie 中。当我有一个字符串需要删除脏话时,我会使用标点符号分解该字符串,并使用 Trie 检查每个单词。如果找到我用星号替换。然后我将字符串内爆问题是,如何跟踪标点符号?换句话说,如何确保生成的字符串包含标点符号?

Im implementing a profanity filter by using a Trie data structure. Every swear word is added to the Trie. When I have a string to remove profanities from, I explode the string by using punctuations and check every word with the Trie. If found I replace by asterisks.Then I implode the string The issue is, how do I keep track of punctuations? In other words how do I make sure the resultant string has punctuations?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一遍 2024-11-17 06:06:09

如果您使用 preg_split() 拆分字符串,请考虑使用 PREG_SPLIT_DELIM_CAPTURE 标志来捕获匹配的标点符号。

请考虑:

$str = "This. string/ has? punctuation!";
print_r(preg_split('/(\W+)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE));

/*
  Array
  (
      [0] => This
      [1] => . 
      [2] => string
      [3] => / 
      [4] => has
      [5] => ? 
      [6] => punctuation
      [7] => !
      [8] => 
  )
*/

请参阅 http://php.net/preg_split 了解更多信息。

If you are using preg_split() to split up your string, consider using the PREG_SPLIT_DELIM_CAPTURE flag to capture the punctuation with the matches.

Consider:

$str = "This. string/ has? punctuation!";
print_r(preg_split('/(\W+)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE));

/*
  Array
  (
      [0] => This
      [1] => . 
      [2] => string
      [3] => / 
      [4] => has
      [5] => ? 
      [6] => punctuation
      [7] => !
      [8] => 
  )
*/

See http://php.net/preg_split for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文