从C/C++转到Java的程序员,一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词,例如“hello_world”;而Java则采用一种叫骆驼命名法的规则:除首个单词以外,所有单词的首字母大写,例如“helloWorld”。
请你帮可怜的程序员们自动转换变量名。
输入包含多组数据。
每组数据一行,包含一个C语言风格的变量名。每个变量名长度不超过100。
对应每一组数据,输出变量名相应的骆驼命名法。
hello_world nice_to_meet_you
helloWorld niceToMeetYou
#include<iostream> #include<vector> #include<string> #include<algorithm> #include<functional> #include <map> #include <set> #include <unordered_set> #include <unordered_map> #include <exception> #include <iomanip> #include <memory> #include <sstream> #define INF 1000000 using namespace std; int main(int argc, char** argv) { //freopen("in.txt", "r", stdin); string s; while (cin >> s) { for (int i = 0; i < s.size(); ++i) { if (s[i] == '_') continue; if (i > 0 && s[i - 1] == '_') cout << (char)toupper(s[i]); else cout << s[i]; } cout << endl; } return 0; }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); while(scanner.hasNext()){ String str=scanner.nextLine(); String[] words=str.split("_"); String result=words[0]; for(int i=1;i<words.length;i++){ result+=(char)(words[i].charAt(0)-'a'+'A'); for(int j=1;j<words[i].length();j++){ result+=words[i].charAt(j); } } System.out.println(result); } } }
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNextLine()){ String result = ""; String str = in.nextLine(); for(int i = 0;i < str.length();i++){ char a = str.charAt(i); if(a == '_'){ i++; char b = (char)(str.charAt(i) - 32); result += b; }else{ result += a; } } System.out.println(result); } } }
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String s = sc.nextLine(); char[] ch = s.toCharArray(); int len = ch.length; for(int i = 0;i < len;i++){ if(ch[i] == '_'){ continue; }else if(i > 0 && ch[i - 1] == '_'){ //将小写转换为大写 System.out.print((char)(ch[i] - 32)); }else{ System.out.print(ch[i]); } } System.out.println(); } } }
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str = sc.nextLine(); StringBuilder sb = new StringBuilder(); for(int i = 0; i < str.length(); i++){ if(str.charAt(i) == '_'){ sb.append(str.substring(++i, i+1).toUpperCase()); } else{ sb.append(str.charAt(i)); } } System.out.println(sb); } } }
遍历一遍,如果是下划线下一次就减32,不是下划线就不变,大写小写之间相差32
#include<iostream> #include<string> using namespace std; int main() { string str; while(cin>>str) { string ret; for(int i=0;i<str.size();++i) { if(str[i] == '_') str[i+1] -= 32; else ret += str[i]; } cout<<ret<<endl; } }
import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); while (sc.hasNext()){ String s=sc.nextLine(); getName(s); } } private static void getName(String s) { char[] c=s.toCharArray(); StringBuilder sb=new StringBuilder(); for (int i = 0; i <c.length ; i++) { if (c[i]=='_'){ sb.append(Character.toUpperCase(c[i+1])); i++; }else { sb.append(c[i]); } } System.out.println(sb.toString()); } }
// write your code here cpp #include<cstdio> (802)#include<cstring> #include<cctype> char str[110]; int main(){ while(scanf("%s",str)!=EOF){ int k=0; for(int i=0;i<strlen(str);++i){ if(str[i]=='_'){ str[i+1]=toupper(str[i+1]); continue; } str[k++]=str[i]; } str[k]='\0'; printf("%s\n",str); } return 0; }
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { StringBuilder sb = new StringBuilder(in.nextLine()); for(int i=0; i<sb.length(); i++){ if(sb.charAt(i) == '_'){ sb.replace(i,i+2,(sb.charAt(i+1)+"").toUpperCase()); } } System.out.println(sb.toString()); } } }
int main() { string c; int flage; while (getline(cin,c)) { flage = 0; for (int i = 0; i < c.size(); i++) { if (c[i] == '_') { c.erase(c.begin()+i); flage = 1; i--; } else if (flage == 1) { c[i] = toupper(c[i]); cout << c[i]; flage = 0; } else { cout << c[i]; } } cout << endl; } return 0; }