如何使用Powershell检测CamelCase

Kal*_*nGi 2 powershell camelcasing

我想拆分格式为ArtistTitle的歌曲名称,以使其最终成为Artist-Title

Powershell中是否可以检测CamelCase边界并执行替换?这只会影响第一种情况的边界,而忽略其余的情况。

Sha*_*evy 5

您可以使用区分大小写的正则表达式在任何大写字母字符之前拆分字符串,删除空元素,然后用破折号连接剩下的内容:

PS> 'ArtistTitle' -csplit '(?=[A-Z])' -ne '' -join '-'
Artist-Title
Run Code Online (Sandbox Code Playgroud)

要仅拆分第一个单词,请使用Split运算符的第二个参数(最大子字符串)指定返回的最大子字符串数。有关about_Split更多信息,请参见帮助主题:

PS> 'ArtistVeryLongAlbumTitle' -csplit '(?=[A-Z])',3  -ne '' -join '-'
Artist-VeryLongAlbumTitle
Run Code Online (Sandbox Code Playgroud)

更新:我能够通过使用正则表达式模式使命令更短,如果它是第一个(在字符串的开头),则不分割大写字符,因此不会创建空项:

PS>  'ArtistVeryLongAlbumTitle' -csplit '(?<!^)(?=[A-Z])',2 -join '-'
Artist-VeryLongAlbumTitle
Run Code Online (Sandbox Code Playgroud)