Android 如何加上「-&引用;在字符串中的每个大写字母之前
除了字符串的第一个大写字母外,如何在字符串的每个大写字母前添加“-” 我有一个类似“HelloWorldMyNameIsCarl”的字符串,我正在使用这个Android 如何加上「-&引用;在字符串中的每个大写字母之前,android,Android,除了字符串的第一个大写字母外,如何在字符串的每个大写字母前添加“-” 我有一个类似“HelloWorldMyNameIsCarl”的字符串,我正在使用这个 "HelloWorldMyNameIsCarl".replaceAll("(.)(\\p{Lu})", "$1-$2") 很好用 解决办法是 "Hello_World_My_Name_Is_Carl" 但对于“THisForNEWTest”来说,它不起作用,解决方案是 "T-His-For-NEw-Test" 但是我想要 "T-His
"HelloWorldMyNameIsCarl".replaceAll("(.)(\\p{Lu})", "$1-$2")
很好用
解决办法是
"Hello_World_My_Name_Is_Carl"
但对于“THisForNEWTest”来说,它不起作用,解决方案是
"T-His-For-NEw-Test"
但是我想要
"T-His-For-N-Ew-Test"
请建议我如何解决这个问题
谢谢。如果正则表达式有太复杂的问题,您可以使用普通编程。它甚至可能更有效率:
public static String doIt(String input)
{
int size=input.length();
if(size==0)
return "";
StringBuilder sb=new StringBuilder(size);
sb.append(input.charAt(0));
for(int i=1;i<size;++i)
{
char c=input.charAt(i);
if(Character.isUpperCase(c))
sb.append('-');
sb.append(c);
}
return sb.toString();
}
你为什么不这样做:
replaceAll("(\\p{Lu})", "-$1").replaceAll("^-", "")
请尝试以下代码:
String test = "THisForNEwTest";
int size = test.length();
StringBuffer sb = new StringBuffer();
if(size!=0)
sb.append(test.charAt(0));
for (int i = 1; i < size; i++) {
if(Character.isUpperCase(test.charAt(i))){
sb.append("-"+test.charAt(i));
}else{
sb.append(test.charAt(i));
}
}
System.out.println("result is::::"+sb.toString());
String test=“THisForNEwTest”;
int size=test.length();
StringBuffer sb=新的StringBuffer();
如果(大小!=0)
sb追加(测试字符(0));
对于(int i=1;i
试试这个:
public static String function(String str) {
StringBuilder result = new StringBuilder();
List<Integer> capital = new ArrayList<Integer>();
for (int i = 0; i < str.length(); i++)
if (Character.isUpperCase(str.charAt(i)))
capital.add(i);
int capIndex = 0;
int x = 0;
for (int y = 0; y < str.length(); y++) {
if(x < capital.size())
capIndex = capital.get(x);
if (y == 0) {
result.append(str.charAt(y));
x++;
} else if(y == capIndex){
result.append("-" + str.charAt(y));
x++;
} else {
if(str.charAt(y) != ' ')
result.append(str.charAt(y));
}
}
return result.toString();
}
公共静态字符串函数(String str){
StringBuilder结果=新建StringBuilder();
列表资本=新的ArrayList();
对于(int i=0;i
我已经提供了一个非常类似的代码。此外,您没有处理空字符串的情况,通过连接内容,您可以创建新的临时字符串…@deep欢迎您。在看到“Vamshi”解决方案后,我用Character.isUpperCase而不是检查值对代码进行了一些更改。我做检查是因为我还是一个前C程序员…@deep我还用正则表达式更新了答案。实际上第二个解决方案没有满-你需要检查输入字符串是否为空,如果是,返回“”。节日快乐。
public static String function(String str) {
StringBuilder result = new StringBuilder();
List<Integer> capital = new ArrayList<Integer>();
for (int i = 0; i < str.length(); i++)
if (Character.isUpperCase(str.charAt(i)))
capital.add(i);
int capIndex = 0;
int x = 0;
for (int y = 0; y < str.length(); y++) {
if(x < capital.size())
capIndex = capital.get(x);
if (y == 0) {
result.append(str.charAt(y));
x++;
} else if(y == capIndex){
result.append("-" + str.charAt(y));
x++;
} else {
if(str.charAt(y) != ' ')
result.append(str.charAt(y));
}
}
return result.toString();
}