Java - 获取字符串的第一个字母
Java - Get first letter of string
我正在尝试提取用户对我的应用程序所说的句子中每个单词的首字母。目前,如果用户说 "Hello World 2015",它会将其插入到文本字段中。我希望将其拆分,以便在用户说 "Hello World 2015" 时仅将 "HW2015" 插入到文本字段中。
final ArrayList<String> matches = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
matches 变量将用户输入存储在一个 array.I 中,已经研究过使用 split 但不确定它到底是如何工作的。
我该如何实现?
谢谢
您可以通过这样做将一个字符串拆分为一个字符串数组:
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;
}
}
将此正则表达式和您的列表传递到 applyRegexToList
内容如下:
(获取第一个字符)或(任何连续数字)或(space 之后的任何字符)
(^.{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;
}
我正在尝试提取用户对我的应用程序所说的句子中每个单词的首字母。目前,如果用户说 "Hello World 2015",它会将其插入到文本字段中。我希望将其拆分,以便在用户说 "Hello World 2015" 时仅将 "HW2015" 插入到文本字段中。
final ArrayList<String> matches = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
matches 变量将用户输入存储在一个 array.I 中,已经研究过使用 split 但不确定它到底是如何工作的。
我该如何实现?
谢谢
您可以通过这样做将一个字符串拆分为一个字符串数组:
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;
}
}
将此正则表达式和您的列表传递到 applyRegexToList
内容如下: (获取第一个字符)或(任何连续数字)或(space 之后的任何字符)
(^.{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;
}