java - 将动态字符串变量转换为 string.match() 的正则表达式?

标签 java expression string-matching

我有一个字符串变量被传递到名为“letters”(Say)的方法 check() 中。因此该字符串将是动态的。

该方法需要检查在数组列表中单独传递的单词是否仅包含“字母”中包含的字符。

我的循环中有以下内容,当循环遍历数组时,单词字符串每次都会发生变化。

word = wordArray.get(i);

if ((word.length() <= letters.length()) && (word.matches(letters))
{
    // Do something.
}

string.matches() 似乎是可行的方法,但是考虑到上述代码不起作用,我在弄清楚如何使用字母字符串变量作为匹配所使用的表达式时遇到了问题。

我的想法是我可能需要添加某些表达式字符,或者可能转义字母字符串? (我已经尝试过这个,但没有运气)任何人都可以建议我如何确保该单词只能包含字符串变量“字母”中的字符?

谢谢

最佳答案

你可以做到

Pattern p = Pattern.compile("[" + Pattern.quote(letters) + "]*");

然后是:

if (word.length() <= letters.length() && p.matcher(word).matches());

关于java - 将动态字符串变量转换为 string.match() 的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22077569/

相关文章:

c# - 在每次调用时重新评估常量 FieldExpression 的值

sql-server - SSIS 表达式中带时间戳的前导零

algorithm - OCR:根据最后 N 个结果选择最佳字符串(OCR 自适应过滤器)

java - View arg0 和 View v 有什么区别?

仅在不存在时添加的 Java 命名约定

java - Spring Reactive 与 MongoDB 因超过 1000 条记录而失败

java - 使用 JXL 关闭 Excel 中的网格线

java - Proguard 和 lambda 表达式

.net - VB.NET 'Like' 运算符中可能存在的错误?

java - 用 Java 实现的最佳字符串匹配算法?