我想拆分 ArtistTitle 形式的歌曲名称,以便它们最终成为 Artist - Title
Powershell 中有没有办法检测 CamelCase 边界并执行替换?这应该只影响第一个案例边界并忽略其余部分。
最佳答案
您可以使用区分大小写的正则表达式在任何大写字符之前拆分字符串,删除空元素,然后用破折号连接剩下的内容:
PS> 'ArtistTitle' -csplit '(?=[A-Z])' -ne '' -join '-'
Artist-Title
要仅拆分第一个单词,请使用拆分运算符的第二个参数(Max-substrings)指定返回的最大子字符串数。有关详细信息,请参阅 about_Split
帮助主题:
PS> 'ArtistVeryLongAlbumTitle' -csplit '(?=[A-Z])',3 -ne '' -join '-'
Artist-VeryLongAlbumTitle
更新:我能够使用正则表达式模式来缩短命令项目未创建:
PS> 'ArtistVeryLongAlbumTitle' -csplit '(?<!^)(?=[A-Z])',2 -join '-'
Artist-VeryLongAlbumTitle
关于powershell - 如何使用 Powershell 检测 CamelCase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643380/