我有一个使用Ionic和Angular 4制作的测验应用程序。用户必须提交答案,我会检查它是否与答案相同。 我想检查字符串对应关系,并根据好答案和用户答案之间的对应关系处理事件。
在例如: 如果答案是“azerty”,并且他写了“mzerty”,我想让他继续。 如果用户写了“qwerty”,或者说的东西太不同了,他就会失败。
答案 0 :(得分:1)
您可以简单地创建一个方法,该方法将返回匹配的字符数。所以根据匹配的字符和字符串的长度,你可以判断天气是否是一个很好的答案。
function checkEq(str1, str2){
var arr1 = str1.split('');
var arr2 = str2.split('');
var counter = 0;
for(var i=0;i<arr1.length;i++){
if(arr1[i]==arr2[i]){
counter++;
}
}
return counter;
}
答案 1 :(得分:1)
Levenstein距离的简单演示就是这样:
<强>打字稿强>
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operators';
import levenshtein from 'fast-levenshtein';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
form: FormGroup;
score$: Observable<number>;
constructor(private fb: FormBuilder) { }
ngOnInit() {
this.initForm();
this.initScore();
}
private initForm() {
this.form = this.fb.group({
str1: '',
str2: '',
});
}
private initScore() {
this.score$ = this.form
.valueChanges
.pipe(
map(({str1, str2}) => levenshtein.get(str1, str2))
);
}
}
<强> HTML 强>
<form [formGroup]="form">
<input type="text" formControlName="str1">
<br>
<br>
<input type="text" formControlName="str2">
</form>
<br>
<div>
Levenshtein score: {{ score$ | async }}
</div>
Stackblitz现场演示:https://stackblitz.com/edit/angular-usydyu