字符串的下划线命名和驼峰命名转换

字符串的下划线命名和驼峰命名转换

java

/** 
 * 将驼峰式命名的字符串转换为下划线大写方式。如果转换前的驼峰式命名的字符串为空,则返回空字符串。
* 例如:HelloWorld->HELLO_WORLD * @param name 转换前的驼峰式命名的字符串 * @return 转换后下划线大写方式命名的字符串 */
publicstatic String underscoreName(String name) { StringBuilder result = newStringBuilder(); if(name != null&& name.length() > 0) { // 将第一个字符处理成大写 result.append(name.substring(0,1).toUpperCase()); // 循环处理其余字符 for(inti = 1; i < name.length(); i++) { String s = name.substring(i, i + 1); // 在大写字母前添加下划线 if(s.equals(s.toUpperCase()) && !Character.isDigit(s.charAt(0))) { result.append("_"); } // 其他字符直接转成大写 result.append(s.toUpperCase()); } } returnresult.toString(); }

C++

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define INF 0x3f3f3f3f
#define EPS 1e-24
using namespace std;

typedef long long ll;
const ll Mod = 1e9 + 7;

int main(){
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);

    int n;
    while(cin>>n){
        for(int i=0;istring s;
            cin>>s;
            if(s.find('_')!=string::npos){
                int pos = s.find('_');
                s.erase(pos,1);
                s[pos] = toupper(s[pos]);
            }
            else{
                int pos;
                for(int j=0;jif(s[j] > 'A' && s[j] < 'Z'){
                        pos = j;
                        break;
                    }
                }
                s.insert(pos,"_");
                s[pos+1] = tolower(s[pos+1]);
            }
            cout<< s <return 0;
}

你可能感兴趣的:(水库,STL)