我遇到字符串比较问题。例如,有这个字符串:
"hello world i am from heaven"
我想搜索此字符串是否包含“world”。我使用了以下功能,但它们有一些问题。我使用String.indexof()
,但如果我尝试搜索“w”,它会说它存在。
简而言之,我认为我正在寻找确切的比较。 Java中有什么好的功能吗?
Java中是否还有可以计算log base 2的函数?
答案 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);