大概就是设计一个函数,要求返回不小于最小长度的字符串,字符串长度不够的,用传进的字符补全字符串。
padStart(string,minLength,padChar)
string:需要出现在返回结果的末尾
minLength:必须值,可以为零或负,此时返回完整的字符串
padChar:用于插入字符串前以补全字符串达到最小的字符串长度
return:返回拼接后的字符串
例如padStart("7",3,"0") returns"007"
padStart("2010",3,"0")retruns "2010"
<script>
function padStart(string,minLength,padChar){
varresult = string;
if(string.length >= minLength){
return result;
}
else{
do{
result = padChar + result;
}
while(result.length<minLength);
}
return result;
}
alert(padStart("7","3","0"));
alert(padStart("2010","3","0"));
</script>
2.编写一个简单的命令行参数解析函数,命令行的参数名用“-”加英文或数字组 成,例如“-name”,后面跟着的部分是具体的值,命令行参数之间,参数与值之间用一个或多个连续的空格分隔。双引号中的内容作为一个整体看待,不进行解析。返回结果是被分隔开的额一个个参数和值。假定命令行的内容只会包含英文、数字、空格、双引号和减号。
例如,参数为:
-name Lily -age 21 -school""University of Oxford"
返回结果为:
[-name Lily,-age 21,-school"University of Oxford"
<script>
function getParam(str){
var result = new Array();
result = str.split("-");
result.shift();
for(var i = 0; i<result.length; i++){
result[i] = "-" + result[i];
}
return result;
}
alert(getParam("-dsfsd 3443 -glkajf fsf -ere sfd"));
</script>
3.编写一个diff函数,用来比较两个字符串的差异,如果字符在第一个字符串 中存在,在第二个字符串中不存在则输出减号和相应的字符串;如果字符在第二个字符串中存在,在第一个字符串中不存在则输出加号和相应的字符串;如果存在相同的子字符串,则子字符串中的内容都不需要输出,字符的比较结果用逗号分隔,每个差异的字符串都要找出来。要求充分利用相同的子字符串,尽可能优化算法保 证输出的结果最短。作为参数的字符串中只会包含英文字母。
假设函数原型为:
String diff(String a,String b)
如:
a="abc",b="aabcbc",则输出为"+a,+b,+c";
a="abcde",b="bcdef",则输出为“-a,+f”
<script>
function diff(strA , strB){
//用数组存储字符串
var arrA = strA.split(""),
arrB = strB.split(""),
result = "",
temp = 0;
//排序,以便比较
arrA = arrA.sort();
arrB = arrB.sort();
//将A,B数组进行比较,当A或B到最后的时候终止
for(var i = 0 ,j = 0; ( i < arrA.length )&& (j < arrB.length) ; ){
//若arrA[i] > arrB[j]则表示arrA[i]字符比arrB[j]大,那么arrB[j]不在arrA中,其他的同理
if(arrA[i] > arrB[j]){
result = result + "+" + arrB[j];
j++;
temp = i;
}
else if (arrA[i] == arrB[j])
{
i++;
j++;
}
else if (arrA[i] < arrB[j])
{
result = result + "-" + arrA[i];
i++;
temp = j;
}
}
//字符串比较截止后,B组长度较长,处理后面的字符
if(arrA[arrA.length - 1] <arrB[arrB.length - 1]){
for(var i = temp; i < arrB.length; i++){
result = result + "+" + arrB[i];
}
}
//字符串比较截止后,A组长度较长,处理后面的字符
else if(arrA[arrA.length - 1] >arrB[arrB.length - 1]){
var index = strA.indexOf(arrB[arrB.length - 1]);
for(var i = temp; i < arrA.length; i++){
result = result + "-" + arrA[i];
}
}
return result;
}
alert(diff("abc" , "ae"));
</script>
解法二:
function ifexist (a , b) {
vara,b,tempa;
this.a=tempa =a;
this.b=b;
varstr1=''
//把b中的元素从a中逐个剔除
for(vari= 0; i<b.length; i++){
a= a.replace(b.charAt(i), '');
}
//遍历a中剩下的元素
for(vari= 0; i<a.length; i++){
str1='-'+a.charAt(i)+str1;
}
//把a中的元素从b中 逐个剔除(得临时保存一下 原始的a)
for(vari= 0; i<tempa.length; i++){
b= b.replace(tempa.charAt(i), '');
}
//遍历b中剩下的元素
for(vari= 0; i<b.length; i++){
str1=str1 + '+'+ b.charAt(i);
}
alert(str1);
}
ifexist("jfaldfsdsf","slkhahasfs");