Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使字符串中的一个字母小写,所有其他字母大写_Javascript - Fatal编程技术网

Javascript 使字符串中的一个字母小写,所有其他字母大写

Javascript 使字符串中的一个字母小写,所有其他字母大写,javascript,Javascript,我试图制作一个大写的可变字符串和一个小写的()字母。字符串将是用户输入的内容,因此不知道提前输入的内容 用户输入示例 输入什么 hello(K) (K)lear 预期结果是什么 HELLO(k) (k)LEAR 输入什么 hello(K) (K)lear 预期结果是什么 HELLO(k) (k)LEAR 下面是我尝试过的,但只有当()位于字符串末尾时,才能使其工作 if(getElementById("ID")){ var headli

我试图制作一个大写的可变字符串和一个小写的()字母。字符串将是用户输入的内容,因此不知道提前输入的内容

用户输入示例

输入什么

hello(K)
(K)lear
预期结果是什么

HELLO(k)
(k)LEAR
输入什么

hello(K)
(K)lear
预期结果是什么

HELLO(k)
(k)LEAR
下面是我尝试过的,但只有当()位于字符串末尾时,才能使其工作

    if(getElementById("ID")){
        var headline = getElementById("ID").getValue();
        var headlineUpper = headline.toUpperCase();
        var IndexOf = headlineUpper.indexOf("(");
        if(IndexOf === -1){
            template.getRegionNode("Region").setValue(headlineUpper);
        }
        else{
            var plus = parseInt(IndexOf + 1);
            var replacing = headlineUpper[plus];
            var lower = replacing.toLowerCase();
            var render = headlineUpper.replace(headlineUpper.substring(plus), lower + ")");
            
            getElementById("Region").setValue(render);
        }
    }

对于我们的系统,我只能使用普通javascript,您可以分别处理字符串的三个部分

const convert=str=>{
设idx=str.indexOf('(');
如果(idx==-1){
return str.toUpperCase();
}否则{
返回str.slice(0,idx).toUpperCase()+str.slice(idx,idx+3).toLowerCase()+str.slice(idx+3).toUpperCase();
}
};
console.log(convert('hello(K)');

console.log(convert(“(K)lear”);
您可以使用正则表达式替换,以及一个函数来计算捕获组的替换

函数转换程序(str){
返回str.replace(/^([^(]*)(\([^)]*\)(.*)/,
(match,g1,g2,g3)=>g1.toUpperCase()+g2.toLowerCase()+g3.toUpperCase());
}
log(convertParenCase('hello(K)');

log(convertParenCase(“(K)lear”);
使用正则表达式可以很容易地完成

if(getElementById("ID")){
    var headline = getElementById("ID").getValue();
    var headlineUpper = headline.toUpperCase();
    var textInBracket = headlineUpper.match(/\(.*\)/);
    if(textInBracket && textInBracket.length) {
       headlineUpper = headlineUpper.replace(textInBracket[0], textInBracket[0].toLowerCase())
    }
    template.getRegionNode("Region").setValue(headlineUpper);
}
您可以将所有内容转换为大写,然后使用模式匹配将括号内的字符串替换为小写(有点像黑客)

对于可能得到或可能得不到括号的情况:

x.toUpperCase().replace(/\(.+\)/g, (x.match(/\(.+\)/g)?x.match(/\(.+\)/g)[0]:"").toLowerCase())

@洛根:没问题。