从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;
}