<分区>
任何人都知道如何将 FirstName
转换为 First Name
。
拆分必须根据 Upper-Case letters 进行,但应排除第一个字母。
我知道如何使用拆分来做到这一点。 除了拆分功能之外,还有其他方法可以做到这一点。
<分区>
任何人都知道如何将 FirstName
转换为 First Name
。
拆分必须根据 Upper-Case letters 进行,但应排除第一个字母。
我知道如何使用拆分来做到这一点。 除了拆分功能之外,还有其他方法可以做到这一点。
最佳答案
不是真的split
, 只是 replaceAll
:
str.replaceAll("(?!^)([A-Z])", " $1")
此解决方案假设您不想在大写英文字母表前添加空格(如果它是字符串中的第一个字符)。所以," FirstName"
将变为 " First Name"
(注意 2 个空格)。
(?!^)
是负面前瞻(?!pattern)
, 只是检查这不是字符串的开头 ^
.我捕获 (pattern)
大写英文字母,并在替换中使用捕获的文本 $1
($1
表示捕获组 1 中捕获的任何内容都将放入替换字符串中 - 在这种情况下只有 1 个捕获组)。
另一种解决方案是在大写英文字母之前添加空格,前提是它前面有小写英文字母:
str.replaceAll("(?<=[a-z])([A-Z])", " $1")
(?<=[a-z])
是一个积极的回头看(?<=pattern)
检查是否大写字符 [A-Z]
前面是小写英文字母[a-z]
.其余的已经在上面解释过了。
根据要求,模式可能会有很大差异。你只举了一个例子,没有具体的要求,我就瞎猜,给你挑一个模式。
关于java - 在java中基于大写拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14827189/