Java中的子字符串搜索

时间:2010-01-01 01:35:27

标签: java string

我遇到字符串比较问题。例如,有这个字符串:

"hello world i am from heaven"

我想搜索此字符串是否包含“world”。我使用了以下功能,但它们有一些问题。我使用String.indexof(),但如果我尝试搜索“w”,它会说它存在。

简而言之,我认为我正在寻找确切的比较。 Java中有什么好的功能吗?

Java中是否还有可以计算log base 2的函数?

5 个答案:

答案 0 :(得分:24)

我假设您使用角色版本与indexOf()有关的问题(否则为什么在寻找世界时会搜索w?)。如果是这样,indexOf()可以使用字符串参数来搜索:

String s = "hello world i am from heaven";
if (s.indexOf("world") != -1) {
  // it contains world
}

对于log base 2,这很容易:

public static double log2(double d) {
  return Math.log(d) / Math.log(2.0d);
}

答案 1 :(得分:9)

对于精确的字符串比较,您只需执行以下操作:

boolean match = stringA.equals(stringB);

如果要检查字符串是否包含子字符串,可以执行以下操作:

boolean contains = string.contains(substring);

有关更多字符串方法,请参阅javadocs

答案 2 :(得分:0)

您好我的版本如下:

public class Staff
{
    public int ID { get; set; }

    // other fields

    [ForeignKey("DepartmentID")]
    public int DepartmentID { get; set; }

    public virtual Department Department { get; set; }
}

public class Department
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }

    public virtual Staff Staff{ get; set; }
}

请告诉我它是否有用。

答案 3 :(得分:0)

我终于得到了解决方案。

public void onTextChanged(CharSequence s, int start, int before, int count) {

                        ArrayList<HashMap<String, String>> arrayTemplist = new ArrayList<HashMap<String, String>>();
                        String searchString = mEditText.getText().toString();
                        if(searchString.equals("")){new DownloadJSON().execute();}

                    else{


                    for (int i = 0; i < arraylist.size(); i++) {
                        String currentString = arraylist.get(i).get(MainActivity.COUNTRY);
                        if (searchString.toLowerCase().contains(currentString.toLowerCase())) {
    //pass the character-sequence instead of currentstring

                            arrayTemplist.add(arraylist.get(i));
                        }
                    }
                        }
                        adapter = new ListViewAdapter(MainActivity.this, arrayTemplist);
                        listview.setAdapter(adapter);

                }


            });
    }

将以上代码替换为以下代码:

public void onTextChanged(CharSequence s, int start, int before, int count) {

                        ArrayList<HashMap<String, String>> arrayTemplist = new ArrayList<HashMap<String, String>>();
                        String searchString = mEditText.getText().toString();
                        if(searchString.equals("")){new DownloadJSON().execute();}

                    else{


                    for (int i = 0; i < arraylist.size(); i++) {
                        String currentString = arraylist.get(i).get(MainActivity.COUNTRY);
                        if (currentString.toLowerCase().contains(searchString.toLowerCase())) {
    //pass the character-sequence instead of currentstring

                            arrayTemplist.add(arraylist.get(i));
                        }
                    }
                        }
                        adapter = new ListViewAdapter(MainActivity.this, arrayTemplist);
                        listview.setAdapter(adapter);

                }


            });

答案 4 :(得分:0)

假设您有以下字符串:

String sampleS = "hello world i am from heaven";

使用以下代码进行字符串到字符串比较:

boolean is_Equal = sampleS.equals("<any string you want to compare>");

使用以下任一代码检查您的字符串是否包含子字符串:

boolean is_Contains = sampleS.contains("world");
// OR
boolean is_Contains = (sampleS.indexOf("world") != -1);