[英]How to retrieve string after @ character and before space using javascript or react?
我是编程新手。 我想在@
字符之后以及用户在输入字段中输入的下一个空格之前检索字符串。 例如,采取以下方式:
somestring @user进入
我想在这里提取字符串“user”。
我有一个输入字段,用户输入的输入存储在文本状态。 然后,每当用户在输入字段中输入@时,我想显示包含用户列表的下拉列表。 现在,当用户在@字符后输入任何内容时,我想根据该字符串过滤用户。
目前,此文本状态包含整个用户输入。
现在,当我根据文本状态过滤用户列表时,它返回一个空数组,因为我正在对整个字符串进行过滤。
下面是我为尝试解决问题而编写的代码:
class UserMention extends react.PureComponent {
state = {
text='',
user_mention=false,
};
user_list = [
{name: 'user1'},
{name: 'first_user'},
{name: 'second_user'},
];
handle_input_change = (event) => {
let user_mention;
if (event.target.value.endsWith('@')) {
user_mention = true;
} else {
user_mention = false;
}
this.setState({
is_user_mention: is_user_mention,
[event.target.name]: event.target.value,
});
}
render = () => {
return {
<input
required
name="text"
value={this.state.text}
onChange={this.handle_input_change}
type="text"/>
{this.state.user_mention &&
<div>
{this.user_list.filter(user =>
user.user_name.indexOf(this.state.new_comment)
!== -1).map((user,index) => (
<div key={index}>{user.name}
</div>
))
}
</div>
}
);};}
使用lastIndexOf查找字符串中@的最后一个索引,然后从该索引获取一个substr 。 然后,您可以拆分空间以仅提取用户:
const getUser = s => s.includes('@') && s.substr(s.lastIndexOf('@') + 1).split(' ')[0] const log = console.log log(getUser('@user1')) log(getUser("@user1 enters some text to @user2")) log(getUser('@user1 enters text @user3 more')) log(getUser('@@@@user4')) log(getUser('no at sign'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.