java - 使用 .contains 和多个单词
问题描述
美好的一天,我怎样才能使用包含多个单词?
String word = "word"
answer1.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (edittext.getText().toString().contains(word)){
Toast.makeText(QuestionActivity.this, "Correct!", Toast.LENGTH_SHORT).show();
如果只有一个单词,那就是代码,在多个单词中我使用这个:
final String[] stringToCheck = new String[]{"word", "life"};
for (final String s : stringToCheck)
answer1.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (answer1.getText().toString().contains(s)){
Toast.makeText(QuestionActivity.this, "Correct!", Toast.LENGTH_SHORT).show();
如果我删除该行for
,则会出现错误。
但该代码不适合我的情况,因为我多次使用这种布局。那么有没有另一种方法或简单的方法来在多个单词中使用包含方法而不使用字符串数组?或者我可以在另一个字符串数组上插入字符串数组吗?(因为我认为这会解决我的问题)
解决方案
添加 for 循环时您正在做的事情是OnKeyListener
多次覆盖。您可以执行以下操作:
final String[] stringToCheck = new String[]{"word", "life"};
final Stream<String> wordsStream = Stream.of(stringToCheck);
answer1.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (wordsStream.anyMatch(s -> answer1.getText().toString().contains(s))) {
Toast.makeText(QuestionActivity.this, "Correct!", Toast.LENGTH_SHORT).show();
这将根据答案检查流中的所有单词,一旦它们中的任何一个匹配,它将触发 Toast。
如果您需要一次使它们全部匹配,那么您可以将 Stream::anyMatch 替换为 Stream::allMatch
推荐阅读
- dask - Streamz + Dask 员工的入住率低于我的预期
- react-native - 有谁知道我如何获取手机中安装的所有可以在 react-native 中运行音频文件的应用程序的列表?
- javascript - 在打字稿中按顺序进行一个或多个 ajax 调用
- pytorch - 预计所有张量都在同一设备上,但发现至少两个设备,cpu 和 cuda:0(在检查方法 wrapper_addmm 中的参数 mat1 时
- java - 带有 HTTP2 码头客户端的 Spring Cloud kubernetes 负载均衡器升级问题
- excel - 如何根据 Excel 中的三列接收单元格数量?
- javascript - 获取 API 上传文件时,JS 中的 preventDefault 不起作用
- python - 试图让 SearchVector 在多个字段中搜索多个单词
- css - 在标题上看不到 SVG
- python - 在 PyQt5 中无法在运行时更改 gif