2015-02-11 141 views
3

我已经开发了一个语音文本程序,用户可以说一个简短的句子,然后将其插入文本框中。提取句子中每个单词的第一个字母

如何提取每个单词的第一个字母,然后将其插入文本字段?

例如,如果用户说:“Hello World”。我想插入HW到文本框中。

+0

这个关于语音识别的问题,还是你已经有了包含用户说的字符串? – immibis 2015-02-11 18:34:45

+0

用户说出和内容被存储到一个字符串 如果(requestCode == RECOGNIZER_RESULT && resultCode为== RESULT_OK){ 最终的ArrayList 匹配= data.getStringArrayListExtra( RecognizerIntent.EXTRA_RESULTS); 匹配是存储输入的字符串 – BasicCoder 2015-02-11 18:36:17

+0

查看字符串API。有很多方法可以像'charAt','split','substring'一样使用。尝试一下,什么时候它不起作用回来你的尝试。 – Pshemo 2015-02-11 18:36:38

回答

0

使用split来获得一个数组分隔的单词,那么你可以得到前012个N个字符与substring(0,N)。

6

如果你有一个字符串,你可以使用

input.split(" ") //splitting by space 
       //maybe you want to replace dots, etc with nothing). 

的迭代这个数组只是把它分解:

for(String s : input.split(" ")) 

,然后让每个字符串的第一个字母列表/阵列/等或将其追加到的字符串:

//Outside the for-loop: 
String firstLetters = ""; 

// Insdie the for-loop: 
firstLetters = s.charAt(0); 

所得功能:

public String getFirstLetters(String text) 
{ 
    String firstLetters = ""; 
    text = text.replaceAll("[.,]", ""); // Replace dots, etc (optional) 
    for(String s : text.split(" ")) 
    { 
    firstLetters += s.charAt(0); 
    } 
    return firstLetters; 
} 

如果你想使用的列表(ArrayList的匹配)将所得的函数:

基本上你只需使用一个阵列/列表/等作为参数类型和代替text.split(“”)你只是使用参数。此外,删除线,在那里你将取代像点字符等

public String getFirstLetters(ArrayList<String> text) 
{ 
    String firstLetters = ""; 
    for(String s : text) 
    { 
    firstLetters += s.charAt(0); 
    } 
    return firstLetters; 
} 
+2

你测试过你的例子吗? (1)字符串是不可变的(2)你会为'replaceAll(“。”,“”)'做什么感到惊讶 – Pshemo 2015-02-11 18:54:23

+0

啊是的,不,我没有。忘了转义点,谢谢提醒! – Cyphrags 2015-02-11 18:57:38

+0

text = text.replaceAll(“\\。”,“”).replaceAll(“,”,“”); – prime 2015-02-11 18:58:27

-1

你想通过

String[] old = myTextView.getText().split(" "); 
String add=""; 
for(String s:old) 
    add+=""+s.charAt(0); 
myTextView.setText(add); 
+0

什么是'myList'? – prime 2015-02-11 19:20:08

+0

我的不好,我的意思是老 – Zach 2015-02-11 23:20:08

0

提取字符串,把它全部放入一个列表和循环假设句只包含a-z and A-Z and " " to separate the words,如果你想要一个有效的方法来做到这一点,我建议下面的方法。

public String getResult(String input){ 
    StringBuilder sb = new StringBuilder(); 
    for(String s : input.split(" ")){ 
     sb.append(s.charAt(0));   
    } 
    return sb.toString(); 
} 

然后将其写入文本字段。

jTextField.setText(getResult(input_String)); 
+0

我试了我的代码 String input = matches.toString(); StringBuilder sb = new StringBuilder();对于(String s:input.split(“”)){ sb.append(s.charAt(0)); } 它没有工作 - 匹配是存储输入的字符串。输出只是整句 – BasicCoder 2015-02-11 19:22:20

+0

尝试'String input = matches;' – prime 2015-02-11 19:37:48

+0

什么是'matches'字符串?你可以把它粘贴在这里还是在问题中? – prime 2015-02-11 19:41:02

相关问题