目前正在处理一个小程序,我的任务是更多地了解indexOf方法如何工作而不实际使用indexOf方法。我觉得我很接近代码是正确的。我将提供我的代码和我的测试文件。我想只为我的程序使用charAt(),length()和equals()方法。
public class MiniString
{
private String str;
public MiniString(String x)
{
this.str = x;
}
public int findIndexOf(int a)
{
int counter = 0;
for(int i = 0; i < this.str.length(); i++)
{
counter++;
}
char[] arr = new char[counter];
for(int i = 0; i < arr.length; i++)
{
arr[i] = this.str.charAt(i);
}
}
}
以下是我传递给我的方法的内容
public class TestMiniString
{
public static void main(String[] args)
{
MiniString s1 = new MiniString("Hello world, welcome to the Java world.");
System.out.println(s1.findIndexOf('w'));
System.out.println(s1.findIndexOf('m'));
System.out.println(s1.findIndexOf('x'));
System.out.println(s1.findIndexOf('J'));
System.out.println(s1.findIndexOf('a'));
System.out.println();
}
答案 0 :(得分:1)
这很简单。 String
中的Java
是内部字符数组。使用charAt(int index)
您可以直接访问此内容。所有你需要的只是循环这个数组并找到所需字符的第一次出现:
public final class MiniString {
private final String str;
public MiniString(String str) {
this.str = str;
}
public int indexOf(int ch) {
for (int pos = 0; pos < str.length(); pos++)
if (str.charAt(pos) == ch)
return pos;
return -1;
}
public int indexOf(String str) {
if (str == null || str.trim().isEmpty())
return -1;
for (int pos = 0; pos < this.str.length() - str.length(); pos++) {
for (int i = 0; i <= str.length(); i++) {
if (i == str.length())
return pos;
if (this.str.charAt(pos + i) != str.charAt(i))
break;
}
}
return -1;
}
}
但要使用外来符号,这些符号用多个字符编写(例如 中国文字)。所以这不适用于所有情况。
请查看Java charAt used with characters that have two code units 了解更多详情。
indexOf(String str)
实施是严格的。 Thare是String searching algorithm的许多特殊算法。
答案 1 :(得分:0)
请尝试这个。希望你喜欢。
library(data.table)
target <- "ENSG00000272602.4"
setDT(df)
df[,lapply(.SD, function(x) unlist(tstrsplit(x, ";", fixed=TRUE)))][ref == target]
# ref b c d e
#1: ENSG00000272602.4 1 3 1 3.2
答案 2 :(得分:0)
public static int subStringIndex(String str, String substr) {
int strlen = str.length();
int substrlen = substr.length();
int count=0;
int substrlen2=substr.length();
if (substrlen >= 1) {
for(int i=0;i<strlen-substrlen+1;i++){
String A=str.substring(i,substrlen2);
if(A.equalsIgnoreCase(substr)){
return count+1;
}else{
count++;
substrlen2++;
}
}
return -1;
}
return -1;
}