Java - 获取字符串的第一个字母

时间:2015-02-17 17:08:33

标签: java android string speech-to-text

我正在尝试提取用户在我的应用中说出的句子中每个单词的首字母。目前,如果用户说" Hello World 2015"它将其插入文本字段。如果用户说" Hello World 2015"我希望将此分开。只有" HW2015"被插入文本字段。

final ArrayList<String> matches = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);

matches变量将用户输入存储在数组中。我已经研究过使用split但不确定它是如何工作的。

我将如何实现这一目标?

谢谢

2 个答案:

答案 0 :(得分:2)

将此正则表达式和您的列表传递给applyRegexToList

它的内容如下: (获得第一个字符)或(任何连续数字)或(空格后的任何字符)

(^.{0,1})|(\\d+)|((?<=\\s)[a-zA-z])

()

 public static ArrayList<String> applyRegexToList(ArrayList<String> yourList, String regex){

    ArrayList<String> matches = new ArrayList<String>();

    // Create a Pattern object
    Pattern r = Pattern.compile(regex);

    for (String sentence:yourList) {
        // Now create matcher object.

        Matcher m = r.matcher(sentence);
        String temp = "";

        //while patterns are still being found, concat
        while(m.find())
        {
            temp += m.group(0);
        }
        matches.add(temp);
    }

    return matches;
}

答案 1 :(得分:1)

您可以通过执行以下操作将字符串拆分为字符串数组:

String[] result = my_string.split("\\s+");  // This is a regex for matching spaces

然后你可以遍历你的数组,取每个字符串的第一个字符:

// The string we'll create
String abbrev = "";

// Loop over the results from the string splitting
for (int i = 0; i < result.length; i++){

    // Grab the first character of this entry
    char c = result[i].charAt(0);

    // If its a number, add the whole number
    if (c >= '0' && c <= '9'){
        abbrev += result[i];
    }

    // If its not a number, just append the character
    else{
        abbrev += c;
    }
}