var Charcter = function Character( name ) {
this.id = {
'name' : name,
'class' : 'ranger',
'level' : 1
}
this.stats = {
'str' : 10,
'dex' : 18,
'con' : 14,
'int' : 10,
'wis' : 16,
'cha' : 16
};
this.skills = [
'archery',
'horsemanship'
];
};
Character.prototype = {
'get' : function get( subType, fieldName ) {
return this[subType][fieldName];
}
};
var shilly = new Character('shilly');
console.log('I am a ' + shilly.get('id', 'class') + ' of level ' + shilly.get('id', 'level') );
console.log('My second skill is ' + shilly.get('skills', 1) + '.' );
如果模式s2存在于文本s1中,则搜索模式s2。并且计数器被设置为写入模式匹配的内容。计数器必须等于#include <iostream>
using namespace std;
int main()
{
string s1="panamabananas";
string s2="nana";
int i,j,k=0;
string count="";
for(i=0;i<s1.length();i++)
{
k=0;
if(s2[k]==s1[i]);
{
count+=s2[k];
for(j=i+1;j<i+s2.length();j++)
{
k++;
if(s2[k]==s1[j])
{
count+=s2[k];
cout<<"it is: "<<count<<endl;
}
else
{
count="";
break;
}
}
}
}
cout<<"the matched string is "<<count;
return 0;
}
,但它表示文本nana
中存在nana
。
我不明白这里出了什么问题。
答案 0 :(得分:0)
看起来你甚至在找到模式后重置计数,因为你没有做任何事情来突破外部for循环并继续。它将第一个字符串中的nana与第二个字符串中的nana进行比较,找到匹配,从内部for循环中删除,然后返回到外部for循环。稍后它将到达s1中的最后一个n,再次触发if语句,并尝试将“nas”与“nana”匹配。当s与n不匹配时,它将count重置为“”。
无论如何,如果你添加一个if语句来检查k是否是s2的长度,那么你可以在找到模式后立即返回。
无论如何,从查看代码看起来就是这样。我建议您使用调试器来完成代码,这样您就可以看到发生了什么。