【发布时间】:2013-11-13 02:51:16
【问题描述】:
我正在使用 ArrayList 来保存字符串列表,并且我正在遍历 ArrayList 并尝试返回以字符串开头的单词(用户输入)。
我的代码:
private void doP( ArrayList <String> words, String cmd3 )
{
for( int i = 0; i < words.size(); i++ )
{
if( words.get( i ).matches( cmd3 + "(.*)" ))
{
tempString.add( words.get( i ));
System.out.println( "H:" + words.get( i ));
}
}
System.out.println( tempString );
如果我将 ( cmd3 + "(.* )" ) 替换为 ( "th(.*)" ),则代码可以正常工作。 我认为这里的问题是格式,我真的想不通。
抱歉使用非描述性术语,我刚开始编程 2 个月前...
TLDR;
if( words.get( i ).matches( cmd3 + "(.*)" ))
这就是问题所在,特别是 (cmd3 + (.*))。我在这方面的逻辑是,用户在末尾输入 (.*) 的任何字符串都应该有效,例如,如果用户键入“ABCD”,那么我应该有:
if( words.get( i ).matches( "ABCD(.*)" ))
谢谢!
PS:startsWith() 方法完成了这项工作,这对我来说是一个非常小的错误。感谢所有回答的人。
【问题讨论】:
-
The code works properly if I replace ( cmd3 + "(.* )" ) with ( "th(.*)" )证明它。向我们展示输入和预期/实际输出。 -
您知道您正在创建一个正则表达式来匹配某些内容吗?此外,您的正则表达式说(对于 ABCD)您的列表中必须有一个与 ABCD+anythingelse 匹配的元素
-
@Sotirios Delimanos - 我给了我的老师一个 file.txt,在一部分中我必须创建一个 ArrayList,其中是一个以字母/字母开头的单词列表 t , th 分别。
标签: java string arraylist iteration