我正在寻找一个正则表达式或者其中的东西:
------------------------
| id | prop_name |
------------------------
| 1 | isThisAnExample |
------------------------
对此:
-----------------------------
| id | prop_name |
-----------------------------
| 1 | Is This An Example |
-----------------------------
当然,如果第一个字符是大写字母,并且其他单词以小写字母开头,那将会很酷。但只有分裂他们也没关系。
答案 0 :(得分:1)
也许这是你正在寻找的正则表达式
"在每个小写字符之间插入一个空格,后跟一个大写字符":
func application(application: UIApplication,
openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
var options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication!,UIApplicationOpenURLOptionsAnnotationKey: annotation]
return GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: sourceApplication,
annotation: annotation)
}
第一个字符可以简单地用大写字母替换
select regexp_replace('IsThisAnExample', '([[:lower:]])([[:upper:]])', '\1 \2') from dual
因此,首先替换结果的第一个字符和regexp_replace:
select upper(substr('isThisAn Example', 1,1))||substr('isThisAn Example', 2) from dual;
如果只有句子的第一个字符应为大写字母,请尝试:
select regexp_replace(upper(substr('isThisAn Example', 1,1))||substr('isThisAn Example', 2), '([[:lower:]])([[:upper:]])', '\1 \2') from dual;
答案 1 :(得分:0)
最好使用正则表达式,但无论如何:
SELECT listagg(splitted, '') within GROUP (ORDER BY lvl) FROM(
SELECT LEVEL lvl, CASE WHEN SUBSTR(your_string, LEVEL, 1) =
UPPER(SUBSTR(your_string, LEVEL, 1))
THEN ' ' || SUBSTR(your_string, LEVEL, 1) ELSE
SUBSTR(your_string, LEVEL, 1) END splitted
FROM (SELECT 'isThisAnExample' your_string FROM dual)
CONNECT BY LEVEL <= LENGTH(your_string) );
答案 2 :(得分:0)
与Frank的解决方案类似,但更简单(尽可能减少正则表达式的使用):
with
input ( str ) as (
select 'isThisAnExample' from dual
)
select upper(substr(str, 1, 1)) ||
lower(regexp_replace(substr(str, 2), '(^|[[:lower:]])([[:upper:]])', '\1 \2'))
as modified_str
from input;
MODIFIED_STR
------------------
Is this an example
1 row selected.