我想将字符串的大小写与示例字符串的大小写相匹配。例如。
var str = "hello world"
var example1 = "My Text Is Great"
var example2 = "my Text Is Great"
var example3 = "My text is great"
answer1 = someGreatFunction(str,example1)//should return Hello World
answer2 = someGreatFunction(str,example2)//should return hello World
answer3 = someGreatFunction(str,example3)//should return Hello world
我希望这能帮助你理解我想要什么。我不想担心引号或任何形式的标点符号。但是,如果它包括对此的支持,那就太好了。
附言直到现在我还没有尝试做任何事情,因为我一无所知。
附言如果您认为这个问题是重复的,请不要标记它。也许我已经浏览了解决方案,但没有找到任何令人满意的东西。
您可以使用
以下方法
- 首先获取小写和大写指标数组
例
"My Text Is Great".split(" ").map( s => s.toLowerCase() == s ? "L" : "U" )
- 使用特定索引处的标志将它们转换为适当的大小写。
例
"hello world".split(/s/).map((s, i) => (indicators[i] == "U" ? s.charAt(0).toUpperCase() : s.charAt(0).toLowerCase() ) + s.substring(1) ).join(" ");
演示
function matchCase(input, master) {
var indicators = master.split(" ").map(s => s.toLowerCase() == s ? "L" : "U");
return input.split(/s/).map((s, i) => (indicators[i] == "U" ? s.charAt(0).toUpperCase() : s.charAt(0).toLowerCase() ) + s.substring(1) ).join(" ");
}
var example1 = "My Text Is Great"
var example2 = "my Text Is Great"
var example3 = "My text is great"
console.log( matchCase( "hello world", example1 ) );
console.log( matchCase( "hello world", example2 ) );
console.log( matchCase( "hello world", example3 ) );