Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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_Algorithm - Fatal编程技术网

Javascript 字符串算法的备用大小写

Javascript 字符串算法的备用大小写,javascript,algorithm,Javascript,Algorithm,我正在尝试编写一个js函数,它根据以下约束条件交替处理该情况: 对于每个单词,奇数位置的字母应为大写,偶数位置的字母应为小写。单词可以包含字母、数字、空格 我在网上找到了一些帮助,并能够编写以下函数,但它适用于某些输入,但不适用于下面提到的其他输入 函数大写{ var chars=s.toLowerCase().split(“”); 对于(变量i=0;i'Hello' 大写('hello world')/==>“hello world” //但它没有给出以下i/p的预期输出。 大写('hell

我正在尝试编写一个js函数,它根据以下约束条件交替处理该情况:

对于每个单词,奇数位置的字母应为大写,偶数位置的字母应为小写。单词可以包含字母、数字、空格

我在网上找到了一些帮助,并能够编写以下函数,但它适用于某些输入,但不适用于下面提到的其他输入

函数大写{
var chars=s.toLowerCase().split(“”);
对于(变量i=0;i'Hello'
大写('hello world')/==>“hello world”
//但它没有给出以下i/p的预期输出。
大写('hello world testing 123')/==>“hello world testing 123”
大写('Hello World')/==>'Hello World'

大写('I will ween you in 2wo year')//=>'I will ween you in 2wo year'
您的代码仅将每隔一个字符转换为大写。此代码段还将其他字符转换为小写

函数大写{
var chars=s.toLowerCase().split(“”);
对于(变量i=0;i'Hello'
大写('hello world')/==>“hello world”
//但它没有给出以下i/p的预期输出。
大写('hello world testing 123')/==>“hello world testing 123”
大写('Hello World')/==>'Hello World'

大写('I will see you in 2wo year')//=>'I will see you in 2wo year'
您可以创建一个正则表达式来捕获单词,并使用函数解析单个单词

出于演示目的,我使用了正则表达式:
/[a-z0-9]/gi
(假设一个单词中只有字母数字字符。如果您还可以有其他字符,请更新正则表达式。)

以下是一个示例:

资本化功能{
var chars=s.toLowerCase().split(“”);
对于(变量i=0;i'Hello'
大写('hello world')/==>“hello world”
//但它没有给出以下i/p的预期输出。
大写('hello world testing 123')/==>“hello world testing 123”
大写('Hello World')/==>'Hello World'

大写(‘我会在2年内见到你’)/==>‘我会在2年内见到你’
我想这就是你想要的。这将首先遍历每个单词,然后使用正则表达式将单词中的替换字符大写

另外,最初不需要转换为小写。这将由函数本身处理

函数大写{
var words=s.split(/\s+/);
for(var i=0;i(first=!first)?c.toLowerCase():c.toUpperCase();
}
//给出以下i/p的预期o/p
大写('Hello')/==>'Hello'
大写('hello world')/==>“hello world”
大写('hello world testing 123')/==>“hello world testing 123”
大写('Hello World')/==>'Hello World'

大写(‘我会在2年内见到你’)//=>‘我会在2年内见到你’
2和3不起作用,因为第二个字母中的“H”在第1位。@theAlexandrian我想OP已经意识到了这一点。问题是,即使在这种情况下,如何使用相同的格式。请注意,最后2个输入不能提供正确的输出。此外,OP的代码更好,因为有
n/2
迭代,而您的
n
迭代是她转换到的lowercase@theAlexandrian谢谢你的建议,但是最后两个订单是错误的,正如上面提到的,单词必须以开头caps@charlietfl更新了我的答案。希望它现在能回答这个问题。是的,你是对的。我错过了他在问题中的“每个单词”的陈述。@Rajesh谢谢你的帮助,有没有一种纯javascript的方式可以让我处理这个问题而不是使用regex??regex是纯JS的一部分。您可以执行类似于的操作,但这会为多个空格单词增加额外的迭代次数。