JAVA :How to determine the index of the next character in a string NOT equal to a set of delimiters

标签 java string count delimiter cpu-word

我认为这个问题对于经验丰富的程序员来说并不是很复杂,但我对此很陌生,所以我很挣扎。 我在 java 类之前声明了一个分隔符列表,如下所示:

public static final String DELIMITERS = ",<.>/?;:'\"[{]}\\|=+-_)(*&^%$#@!`~ \t\n";

我想创建一个带有两个参数(起始索引和字符串)的方法。目标是读取字符串并返回与不在上面给出的分隔符​​列表中的字符相对应的下一个索引。如果起始索引为负数或大于文本长度,则该方法应简单返回 -1。否则,它只返回不在分隔符列表中的下一个字符的索引。 这是我到目前为止所拥有的:

public static boolean isDelimiter(char c) {
    String letter = "" + c;
    if(DELIMITERS.contains(letter)){
        return true;
    }
    else{
        return false;
    }
}

public static int posNextWord(int startPosition, String text) {
    boolean isWord = false;
    int nextWordPosition = 0;
    if(startPosition < 0 || startPosition > (text.length()-1)){
        return -1;
    }
    else{
        while(isWord = false) {
            for (int i = startPosition; i < text.length(); i++) {
                if(!isDelimiter(text.charAt(i))){
                    nextWordPosition = nextWordPosition + i + startPosition;
                    isWord = true;
                }
                else{
                    isWord = false;
                }
            }
        }
        return nextWordPosition;
    }

}

}

但是,当我使用示例文本和索引运行该程序时,该方法仅返回数字 0。任何帮助都将不胜感激。另外,在 posNextWord() 方法中需要使用 isDelimiter 方法。

最佳答案

这整个代码块就是问题所在:

while(isWord = false) {
    for (int i = startPosition; i < text.length(); i++) {
        if(!isDelimiter(text.charAt(i))){
            nextWordPosition = nextWordPosition + i + startPosition;
            isWord = true;
        }
        else{
            isWord = false;
        }
    }
}
return nextWordPosition;

首先,您只需要一个循环来检查循环的每个字符。您不需要 whilefor。其次,如果你想找到第一个不匹配的char,找到后直接返回即可。

像这样:

for (int i = startPosition; i < text.length(); i++) {
    if(!isDelimiter(text.charAt(i))){
        return i + startPosition;
    }
}
return -1; 

关于JAVA :How to determine the index of the next character in a string NOT equal to a set of delimiters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42430677/

相关文章:

java - 如何将参数从 Activity 传递到 Fragment 中的函数

java - 如何将包含转换为 equals.ignorecase?

Java : Searching Ids from hashset or String

MySQL:枚举和计数

java - 无法使用 FirebaseRecyclerAdapter 将 Firebase JSON 转换为 Java 对象

java - SAP JCo : JCoDestination vs. JCoClient

java - Android 语音调用桌面

c++ - Qt和VS C++ dll函数返回值

php - SQL中如何统计最常见的值?

php - 如何计算表格中的多列并使用php显示它们