gpt4 book ai didi

javascript - 如何在不排除任何特殊字符的情况下将驼峰字符串转换为句子大小写?

转载 作者:行者123 更新时间:2023-12-01 15:23:55 25 4
gpt4 key购买 nike

如何在不排除任何特殊字符的情况下将驼峰式字符串转换为大小写的句子?
建议使用正则表达式将带有特殊字符和数字的驼峰式字符串转换为句子大小写?:

const string = `includes:SummaryFromDetailHistory1990-AsAbstract`
预期结果:
Includes : Summary From Detail History 1990 - As Abstract
目前我正在使用 lodash startCase 将 camelCased 转换为 sentenceCase。但是这种方法的问题是它正在删除特殊字符,如括号、数字、括号、连字符、冒号等......(大多数特殊字符)
所以想法是将驼峰字符串转换为句子大小写,同时保留字符串标识
例如:
const anotherString = `thisIsA100CharactersLong:SampleStringContaining-SpecialChar(s)10&20*`

const expectedReturn = `This Is A 100 Characters : Long Sample String Containing - Special Char(s) 10 & 20 *`
正则表达式可以吗?

最佳答案

您必须自己处理所有情况:

  • [a-z](?=[A-Z]) : 小写后跟大写
  • [a-zA-Z](?=[0-9]) : 字母后跟数字
  • [0-9](?=[a-zA-Z]) : 数字后跟字母
  • [a-zA-Z0-9](?=[^a-zA-Z0-9]) : 字母或数字后跟字母或数字(\w\W 可以使用,但它们也涵盖 _,由你决定)
  • [^a-zA-Z0-9](?=[a-zA-Z0-9]) : 不是字母也不是数字,后跟字母或数字

  • 然后,您可以将它们或它们一起:
    ([a-z](?=[A-Z])|[a-zA-Z](?=[0-9])|[0-9](?=[a-zA-Z])|[a-zA-Z0-9](?=[^a-zA-Z0-9])|[^a-zA-Z0-9](?=[a-zA-Z0-9]))
    并替换为:
    $1 
    (见 $1 之后的空格)。
    https://regex101.com/r/4AVbAs/1例如。
    但是,您会遇到边缘情况,例如 Char(s) ,因此您将需要特殊的括号规则(例如,请参阅以下有关可以帮助的后向查看的部分)。有点艰巨的工作,也很容易出错,恐怕很难维护。

    如果允许lookbehinds,则不需要捕获每个组中的第一个字符,而是将左侧模式包装在 (?<=...) 中。并直接用一个简单的空格替换:
  • (?<=[a-z])(?=[A-Z]) : 前面是小写,后面是大写
  • (?<=[a-zA-Z])(?=[0-9]) : 前面是字母,后面是数字
  • (?<=[0-9])(?=[a-zA-Z]) : 前面是数字,后面是字母
  • (?<=[a-zA-Z0-9])(?=[^a-zA-Z0-9])(?!(?:\(s)?\)) : 前面是字母或数字,后面不是字母也不是数字,以及后面不是(s)也不是 )
  • (?<=[^a-zA-Z0-9])(?<!\()(?=[a-zA-Z0-9]) : 前面不是字母也不是数字,也不是前面有( , 后跟字母或数字

  • 或一起:
    (?<=[a-z])(?=[A-Z])|(?<=[a-zA-Z])(?=[0-9])|(?<=[0-9])(?=[a-zA-Z])|(?<=[a-zA-Z0-9])(?=[^a-zA-Z0-9])(?!(?:\(s)?\))|(?<=[^a-zA-Z0-9])(?<!\()(?=[a-zA-Z0-9])
    替换为空白,参见 https://regex101.com/r/DB91DE/1 .

    关于javascript - 如何在不排除任何特殊字符的情况下将驼峰字符串转换为句子大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62727314/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com