字符串中每个单词的第一个字母和标点符号

Ghi*_*taB 9 javascript jquery

输入:\nAliquam ipsum ex, tempus ornare semper ac, varius vitae nibh.

\n

输出:\nA i e, t o s a, v v n.

\n

我需要一个 javascript 函数来解决这个问题。

\n

我正在尝试这样的事情:

\n

\r\n
\r\n
function short_verse(verse) {\n  let result = [];\n\n  verse.split(\' \').map(word => word.charAt(0) != \'\' ? result.push(word.charAt(0)) : \'\');\n\n  return result.join(" ");\n}\n\nlet input = "Aliquam ipsum ex, tempus ornare semper ac, varius vitae nibh.",\n  output = short_verse(input);\n\nconsole.log(output);
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

故事:他们说你可以通过这种方式记住课文。:) 因此,我创建了一个也包含此功能的应用程序。

\n

它也应该适用于非 ASCII 字符。例子:

\n

输入:Aliqu\xc8\x99am \xc8\x9bipsum ex, temp\xc4\x83s orn\xc3\xa2re semper ac, varius vitae \xc3\xaebh.

\n

输出:A \xc8\x9b e, t o s a, v v \xc3\xae

\n

注意:在我的情况下,罗马尼亚语变音符号就足够了 - \xc4\x83\xc3\xa2\xc3\xae\xc8\x99\xc8\x9b\xc4\x82\xc3\x82\xc3\x8e\xc8\x98\xc8\ x9a。

\n

Tim*_*sen 7

我们可以在这里使用正则表达式替换方法:

var input = "Aliquam ipsum ex, tempus ornare semper ac, varius vitae nibh.";
var output = input.replace(/(\w)\w*/g, "$1");
console.log(output);
Run Code Online (Sandbox Code Playgroud)


The*_*ird 7

如果您仅使用单词字符,则可以保留第一个字符并删除其余单词字符。

\n

\\B匹配非单词边界并\\w+匹配 1 个或多个单词字符:

\n

\r\n
\r\n
const s = "Aliquam ipsum ex, tempus ornare semper ac, varius vitae nibh.";\nconsole.log(s.replace(/\\B\\w+/g, ""));
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

对于更新的问题,您可以捕获除任何字母或空白字符之外的前导字符,后跟单个字母。遵循应删除的可选字母,并在替换中使用捕获组 1。

\n
([^\\p{L}\\s]*\\p{L})\\p{L}*\n
Run Code Online (Sandbox Code Playgroud)\n

请参阅此正则表达式演示中的正则表达式匹配。

\n

\r\n
\r\n
([^\\p{L}\\s]*\\p{L})\\p{L}*\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n


Ovi*_*nas 6

以下函数应该适用于字符、数字和符号。神奇之处在于正则表达式;[a-zA-Z\xc3\x80-\xc3\xbf\xc4\x83\xc3\xa2\xc3\xae\xc8\x99\xc8\x9b\xc4\x82\xc3\x82\xc3\x8e\xc8\x98\xc8\x9a]+提取包含字母数字和罗马尼亚语字母字符的所有唯一单词(根据问题请求),\\s提取所有空格字符,因为我们要保留间距,最后^\\w\\s提取所有非字母数字和非空格字符 - 又名符号:

\n

\r\n
\r\n
function short_verse(verse) {\n  let result = [];\n  const tokens = verse.match(/([a-zA-Z\xc3\x80-\xc3\xbf\xc4\x83\xc3\xa2\xc3\xae\xc8\x99\xc8\x9b\xc4\x82\xc3\x82\xc3\x8e\xc8\x98\xc8\x9a]+)|(\\s)|[^\\w\\s]/g);\n  const firstChars = tokens.map((token) => token.charAt(0));\n  return firstChars.join(\'\');\n}\n\nlet input1 = "Aliquam ipsum ex, tempus ornare semper ac, varius vitae nibh.";\nconsole.log(short_verse(input1));\nlet input2 = "S\xc4\x83 fie o \xc3\xaentindere \xc3\xaentre ape, \xc8\x99i ea s\xc4\x83 despart\xc4\x83 apele de ape."\nconsole.log(short_verse(input2));
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n