我使用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 );
如果我用(“th(。*)”)替换(cmd3 +“(。*)”)代码,代码可以正常工作。 我认为这里的问题是格式,我真的无法解决这个问题。
很抱歉使用非描述性术语,我刚刚开始编程2个月前...
TLDR;
if( words.get( i ).matches( cmd3 + "(.*)" ))
这是问题,特别是(cmd3 +(。*))。我的逻辑是,用户在末尾输入(。*)的任何字符串都应该有效,所以例如,如果用户键入“ABCD”,那么我应该:
if( words.get( i ).matches( "ABCD(.*)" ))
谢谢!
PS:startsWith()方法完成了这项工作,这对我来说是一个非常小的错误。感谢所有回答的人。
答案 0 :(得分:2)
答案 1 :(得分:0)
这是因为.matches正在使用正则表达式,因此它正在查找cmd3的值。
我不想过于详细地使用正则表达式并让你感到困惑,但是(。*)的部分可以正常工作,因为它基本上是在添加“零个或多个任何字符”
我认为.startWith(cmd3)会更适合您。
你可以阅读.starsWith()here
答案 2 :(得分:0)
您可以使用startsWith(str)
方法:
private static void doP(ArrayList<String> words, String cmd3)
{
ArrayList<String> tempString = new ArrayList<String>();
for (int i = 0; i < words.size(); i++)
{
if (words.get(i).startsWith(cmd3))
{
tempString .add(words.get(i));
System.out.println("H:" + words.get(i));
}
}
System.out.println(tempString.toString());
}
public static void main(String[] args) throws FileNotFoundException
{
ArrayList<String> strings = new ArrayList<String>();
strings.add("ABCDE");
strings.add("ABCDEFG");
strings.add("BCDE");
doP(strings, "ABC");
}
答案 3 :(得分:0)
我试图运行你在这里发布的方法,它似乎没有任何问题,我只需要在你的方法中放入tempString的声明
import java.util.ArrayList;
public class Test {
public static void main(String a[] ) {
ArrayList<String> arr = new ArrayList<String>();
arr.add("ABCD");
arr.add("EFGH");
arr.add("ABYZ");
doP(arr, "AB");
}
private static void doP( ArrayList <String> words, String cmd3 )
{
ArrayList<String> tempString = new ArrayList<String>();
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 );
}
}
在运行它时,它产生了以下输出
H:ABCD
H:ABYZ
[ABCD, ABYZ]
这不是您对输出的期望吗?那么这里真正的问题是什么?