如果两个单词的开头和结尾符合特定模式,如何用连字符替换它们之间的空格?

我正在使用一种具有某些特定拼写规则的语言。当单词被放在一起时,它们没有空格,但在极少数情况下,可能会使用 '- 来区分一个单词的开始和结束的位置,以防混淆。

目前我需要将单词之间的空格移除,例如:

The cat caught the mouse.

但是,在移除这些空格之前,必须考虑 '- 的放置规则:

首先,如果一个单词的第一个字母(也是后面一个单词的第一个字母)以元音字母(aaáàǎābcdeeéèěēiiíìǐīooóòǒōuuúùǔüǘǜǚǖ,或 ū)开头,则用 ' 代替空格(在单词之间),例如:

The cat ate the sandwich and the ice cream.

变成:

Thecat'atethesandwichandthe'icecream.

这不适用于句子开头的单词。

接下来,如果一个单词的最后一个字母以 "a"、"u" 或 "ü"(aaáàǎāu,uúùǔüǘǜǚǖ,或 ū)开头,而句子中下一个单词以 "n" 开始,则用 - 代替空格(在单词之间),例如:

The people from Australia needed a car to visit the plateau near the river.

变成:

Thepeoplefrom'Australia-needed'acartovisittheplateau-neartheriver.

最后,如果一个单词的最后一个字母以 "n" 结尾,而句子中下一个单词以 "g" 开始,则用 - 代替空格(在单词之间),例如:

The Australian grasshopper was lost in the overgrown grove.

变成:

The'Australian-grasshopperwaslostinthe'overgrown-grove.

如何使用 '- 替换与这些模式匹配的单词之间的空格?

原文链接 https://stackoverflow.com/questions/10037611

点赞
stackoverflow用户41661
stackoverflow用户41661

你没有说明你的目的。希望这不是一个家庭作业问题。

假设一个单词以元音字母结尾,下一个以 'f' 或者 't' 开始,我想用星号替换空格,我可以这样写:

sentence:gsub('([aeiouy])%s+([ft])', '%1*%2')

你可以继续完成接下来的工作。

2012-04-06 01:16:32