我该怎么做才能分开这个词:
oneTwoThreeFour
Run Code Online (Sandbox Code Playgroud)
到一个数组,以便我可以得到:
one Two Three Four
Run Code Online (Sandbox Code Playgroud)
用preg_match?
我厌倦了这个,但它只是完整的说法
$words = preg_match("/[a-zA-Z]*(?:[a-z][a-zA-Z]*[A-Z]|[A-Z][a-zA-Z]*[a-z])[a-zA-Z]*\b/", $string, $matches)`;
Run Code Online (Sandbox Code Playgroud) 我想要实现的是这样的:
>>> camel_case_split("CamelCaseXYZ")
['Camel', 'Case', 'XYZ']
>>> camel_case_split("XYZCamelCase")
['XYZ', 'Camel', 'Case']
Run Code Online (Sandbox Code Playgroud)
所以我搜索并找到了这个完美的正则表达式:
(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])
Run Code Online (Sandbox Code Playgroud)
作为我尝试的下一个逻辑步骤:
>>> re.split("(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])", "CamelCaseXYZ")
['CamelCaseXYZ']
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用,如何从python中的链接问题获得结果?
编辑:解决方案摘要
我用一些测试用例测试了所有提供的解决方案:
string: ''
AplusKminus: ['']
casimir_et_hippolyte: []
two_hundred_success: []
kalefranz: string index out of range # with modification: either [] or ['']
string: ' '
AplusKminus: [' ']
casimir_et_hippolyte: []
two_hundred_success: [' ']
kalefranz: [' ']
string: 'lower'
all algorithms: ['lower']
string: 'UPPER'
all algorithms: ['UPPER']
string: 'Initial'
all algorithms: ['Initial']
string: 'dromedaryCase'
AplusKminus: ['dromedary', 'Case']
casimir_et_hippolyte: ['dromedary', …Run Code Online (Sandbox Code Playgroud) 我在JavaScript中有一个正则表达式,使用以下代码将我的驼峰大小写字母分割为大写字母(我后来从这里得到):
"MyCamelCaseString"
.replace(/([A-Z])/g, ' $1')
.replace(/^./, function(str){ return str.toUpperCase(); })
Run Code Online (Sandbox Code Playgroud)
因此返回:
"My Camel Case String"
Run Code Online (Sandbox Code Playgroud)
这很好.但是,我想把它提升一个档次.有人可以帮助我使用正则表达式,只有当前一个字符为小写且后者为大写时才会拆分.
因此,上面的例子将是我期望的结果,但如果我这样做:
"ExampleID"
Run Code Online (Sandbox Code Playgroud)
然后我回来了:
"Example ID"
Run Code Online (Sandbox Code Playgroud)
代替
"Example I D"
Run Code Online (Sandbox Code Playgroud)
因为它在每个大写字母中分裂并忽略它之前的任何内容.
希望有道理!谢谢:).
我试图定义一个buildConfigVariable取决于香精 + buildType.理想情况下,这就是我想要的
productFlavors {
strawberry {
buildConfigField "String", "WS_API_KEY", name + variant.buildType.name
}
... more flavors ..
}
Run Code Online (Sandbox Code Playgroud)
name确实包含"strawberry",但我不知道是否可以访问variant的buildType.
放置在Android闭包之外我可以访问BuildType和变体,但后来我无法调用buildConfigField
android.applicationVariants.all { variant ->
println "****************************"
println "variant: ${variant.name}"
println "flavor: ${variant.flavorName}"
println "****************************"
if (variant.buildType.name == 'release') {
if (variant.flavorName == 'strawberry') {
buildConfigField "String", "WS_API_KEY", '"strawberry_release"'
} else {
buildConfigField "String", "WS_API_KEY", '"chocolate_release"'
}
} else if(variant.buildType.name == 'debug') {
if …Run Code Online (Sandbox Code Playgroud) 是否可以按案例在JavaScript中拆分字符串,以便下面的字符串(myString)将转换为下面的数组(myArray):
var myString = "HOWtoDOthis";
var myArray = ["HOW", "to", "DO", "this"];
Run Code Online (Sandbox Code Playgroud)
我已经尝试过下面的正则表达式,但它只针对camelCase进行了拆分:
.match(/[A-Z]*[^A-Z]+/g);
Run Code Online (Sandbox Code Playgroud) 我想分裂如下: TwitterHashtagIsVeryCOMPLICATED
分裂后的字符串如: Twitter Hashtag Is Very COMPLICATED
我可以使用正则表达式吗?
非常感谢任何建议.
我能够将字符串转换MyClassName为my_class_name使用正则表达式
但是我的解决方案不起作用MyOtherTClassName,应该转换为my_other_t_class_name.
另外,这也不起作用ClassNumber1,应该将其转换为class_number_1
没有进入我的解决方案,这还不够好,我想帮助转换正则表达式代码:
MyClassName -> my_class_nameMyOtherTClassName -> my_other_t_class_nameMyClassWith1Number -> my_class_with_1_number谢谢,
盖伊
我有一个由几个单词组成的字符串(由大写字母分隔).
例如:
$string1="TestWater"; # to be splited in an array @string1=("Test","Water")
$string2="TodayIsNiceDay"; # as @string2=("Today","Is","Nice","Day")
$string3="EODIsAlwaysGood"; # as @string3=("EOD","Is","Always","Good")
Run Code Online (Sandbox Code Playgroud)
我知道Perl容易拆分使用split函数作为固定字符,或者匹配正则表达式可以将$ 1,$ 2与固定数量的变量分开.但是如何动态完成呢?提前致谢!
那个帖子Spliting CamelCase没有回答我的问题,我的问题更多地与Perl中的正则表达式相关,那个是在Java中(差异在这里适用).
regex ×7
javascript ×2
android ×1
c# ×1
camelcasing ×1
hashtag ×1
java ×1
perl ×1
php ×1
preg-match ×1
python ×1
string ×1