使用indexOf()方法,是否有方法返回字符串中的第一个索引(按字母顺序排列)?JAVA

使用indexOf()方法,是否有方法返回字符串中的第一个索引(按字母顺序排列)?JAVA,java,Java,标题。我是这个网站的新手,如果这是个坏问题,很抱歉。我正试图使其在字符串中没有字母时返回-1。我已经设置了一种遍历字符串的方法,但现在我需要知道如何查看如果在字符串中找到任何字母,它是否返回true,如果没有,则返回-1。要查找字符串中第一个字母的索引,请使用正则表达式: import java.util.regex.Matcher; import java.util.regex.Pattern; 试验 如果使用\p{L}regex,它也会找到重音字母 static int indexOfLe

标题。我是这个网站的新手,如果这是个坏问题,很抱歉。我正试图使其在字符串中没有字母时返回-1。我已经设置了一种遍历字符串的方法,但现在我需要知道如何查看如果在字符串中找到任何字母,它是否返回true,如果没有,则返回-1。

要查找字符串中第一个字母的索引,请使用正则表达式:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
试验

如果使用
\p{L}
regex,它也会找到重音字母

static int indexOfLetter(String input) {
    Matcher m = Pattern.compile("\\p{L}").matcher(input);
    return (m.find() ? m.start() : -1);
}
试验


更新

如果不允许使用正则表达式(“”),则简单的搜索循环调用将执行以下操作:

static int indexOfLetter(字符串输入){
对于(int i=0;i
它确实支持Unicode字母,但不支持代理项对。鉴于基本多语言平面(BMP)之外的字母非常稀少,这可能不是问题。如果是,以下更改也将支持这些更改:

static int indexOfLetter(String input) {
    for (int i = 0; i < input.length(); i = input.offsetByCodePoints(i, 1))
        if (Character.isLetter(input.codePointAt(i)))
            return i;
    return -1;
}
static int indexOfLetter(字符串输入){
对于(int i=0;i
可能不使用
indexOf
,但是正则表达式应该可以尝试转换为int?@PedroRodrigues,将什么转换为
int
?这种方法有什么帮助?可能的重复我建议的重复取决于如果有字符,是否返回“true”,而不是是否要返回第一个字母字符的特定索引。因此,请确切地说明您正试图完成的任务。我正在执行的任务不允许我使用其他导入语句。如果没有其他方法,那么我肯定是走错了方向。非常感谢。
static int indexOfLetter(String input) {
    Matcher m = Pattern.compile("\\p{L}").matcher(input);
    return (m.find() ? m.start() : -1);
}
System.out.println(indexOfLetter("...ñ...")); // 3  'LATIN SMALL LETTER N WITH TILDE' (U+00F1)
System.out.println(indexOfLetter("..ß.."));   // 2  'LATIN SMALL LETTER SHARP S' (U+00DF)
System.out.println(indexOfLetter(".Δ."));     // 1  'GREEK CAPITAL LETTER DELTA' (U+0394)
static int indexOfLetter(String input) {
    for (int i = 0; i < input.length(); i++)
        if (Character.isLetter(input.charAt(i)))
            return i;
    return -1;
}
static int indexOfLetter(String input) {
    for (int i = 0; i < input.length(); i = input.offsetByCodePoints(i, 1))
        if (Character.isLetter(input.codePointAt(i)))
            return i;
    return -1;
}