在java中查找字符串中单词的起始和结束位置

在java中查找字符串中单词的起始和结束位置,java,regex,string,substring,Java,Regex,String,Substring,找到句子中“子串”的起始和结束位置的最佳方法是什么 例如,对于句子“这是我的第一个程序”,通过给子字符串“我的第一个”它应该返回start position=2和end position=4,下面的代码就完成了这个任务。该算法通过查找子字符串第一次出现的索引来工作 子字符串的开始索引等于子字符串之前出现的字数。我们可以通过在第一次匹配单词之前拆分字符串并计算单词数来找到这个数量。结束索引是由子字符串中的字数增加的开始索引 public static Range find(String strin

找到句子中“子串”的起始和结束位置的最佳方法是什么


例如,对于句子
“这是我的第一个程序”
,通过给子字符串
“我的第一个”
它应该返回
start position=2
end position=4

,下面的代码就完成了这个任务。该算法通过查找子字符串第一次出现的索引来工作

子字符串的开始索引等于子字符串之前出现的字数。我们可以通过在第一次匹配单词之前拆分字符串并计算单词数来找到这个数量。结束索引是由子字符串中的字数增加的开始索引

public static Range find(String string, String substring) {
    int index = string.indexOf(substring);
    if (index < 0)
        throw new IllegalStateException();
    int start = string.substring(0,index).split(" +").length;
    int end = start + substring.split(" +").length;
    return new Range(start, end);
}

public class Range {
    public final int start;
    public final int end;

    public Range(int start, int end) { this.start = start; this.end = end; };

    @Override
    public String toString() {
        return String.format("start position=%d end position=%d", start, end);
    }
}
输出:

start position=2 end position=4
这应该很好:

public static void main(String args[])
{
    String[] sentence = "This is my first program".split(" ");
    String[] words = "my first".split(" ");

    int start = -1;

    for (int i = 0, j = 0; i < sentence.length && j < words.length; i++) {
        if (sentence[i].equals(words[j])) {
            if (j++ == 0)
                start = i;
        } else {
            start = -1;
            j = 0;
        }
    }

    if (start == -1)
        System.out.println("doesnt' match");
    else
        System.out.println(start + " - " + (start + words.length));
}
publicstaticvoidmain(字符串参数[])
{
String[]句子=“这是我的第一个程序”。拆分(“”);
String[]words=“我的第一个”。拆分(“”);
int start=-1;
for(inti=0,j=0;i
只需两个步骤,就可以得到句子中单词的起始位置和结束位置

public String startEndPosition(String sentence, String word) {
    int startingPosition = sentence.indexOf(word);
    int endingPosition = startingPosition + word.length();
    return "start position=" + startingPosition + " end position=" + endingPosition;
}
  • 方法
    indexOf
    将获得单词在句子中的起始位置

  • public String startEndPosition(String sentence, String word) {
        int startingPosition = sentence.indexOf(word);
        int endingPosition = startingPosition + word.length();
        return "start position=" + startingPosition + " end position=" + endingPosition;
    }
    
  • 将单词的长度与起始位置相加,可以得到单词在句子中的结束位置

  • public String startEndPosition(String sentence, String word) {
        int startingPosition = sentence.indexOf(word);
        int endingPosition = startingPosition + word.length();
        return "start position=" + startingPosition + " end position=" + endingPosition;
    }
    

参观并享受生活。如果你不满意,你会拿回你的钱。你找到方法了吗?还有,位置是基于字数还是字符数?@Sotirios Delimanolis:事实上,我找不到任何有效的方法!它们是基于数字词的。告诉我们你的无效方法,并告诉我们为什么无效。