我想检查登录的第一个字符是否为字母。我有一个包含所有字母的数组,并且试图比较一个语句中的所有元素。
inputHandler {
this.setState(
{login: event.target.value},
() => {
for( var ch in chars2 ) {
if(this.state.login[0] === chars2[ch]) {
this.setState({message: 'Works'})
} }
} )
}
如果我将其与例如chars2 [3]它起作用。我也尝试了其他循环,但是没有用。有办法吗?
答案 0 :(得分:0)
您可以使用String.includes()
在字符串中查找字符。由于您拥有event.target.value
,因此无需等待setState,因此可以立即分配message属性。
const login = event.target.value;
this.setState({
login,
...(chars2.includes(login[0]) && { message: 'Works' })
});
答案 1 :(得分:0)
计算机已经可以确定字母是什么了;为此使用正则表达式:)
if (/^[a-z]/i.test(this.state.login)) {
//...
}
/
分隔符表示“这是一个正则表达式”,^
表示“匹配字符串的开头”,[a-z]
表示“将任何字母从a匹配到z” ,结尾的i
表示“区分大小写- i 不区分大小写”(不区分大小写),并且正则表达式的.test
方法在满足以下条件时返回true模式在给定的字符串中找到。因此,这就是说“如果字符串的开头以任何字母开头,则返回true”:)