我使用以下代码通过“共享”菜单将TEXT从其他应用程序发送到我的应用程序,并在EditText中显示TEXT。
Intent receivedIntent = getIntent();
String receivedAction = receivedIntent.getAction();
String receivedType = receivedIntent.getType();
TextView txtView = (EditText) findViewById(R.id.edWord);
//if(receivedAction.equals(Intent.ACTION_SEND)){
if (Intent.ACTION_SEND.equals(receivedAction) && receivedType != null) {
if(receivedType.startsWith("text/")) {
String receivedText = receivedIntent.getStringExtra(Intent.EXTRA_TEXT).toLowerCase();
if (receivedText != null)
{
txtView.setText(receivedText);
txtView.requestFocus();
ListView myList=(ListView) findViewById(R.id.lstWord);
myList.setFocusableInTouchMode(true);
myList.setSelection(0);
}
else
txtView.setText("");
}
}
一切正常,即发送的文本显示在我的EditText中(即上面代码中的edWord
)。但问题是通过Share发送的文本有时包含无意义的元素或衍生物,例如:"word
,word'
,word,
或looked
,books
,{ {1}}。
现在我想要的是格式化文本,使其在添加到EditText之前只包含真实单词或单词的基本形式。
我听说过tomatoes
或approximate string matching
,但我不知道如何将其应用到我的代码中。我想知道你是否可以给我一点帮助来解决上述问题,至少是格式化/剥离非单词元素。
提前致谢。
答案 0 :(得分:0)
我想我已经找到了问题第一部分的答案,即从字符串中删除非单词元素(开始和/或结束字符串)。这是我使用的一些Regex算法的代码:
String receivedText = receivedIntent.getStringExtra(Intent.EXTRA_TEXT);
if (receivedText != null)
{
receivedText = receivedText.toLowerCase();
//Remove all non-word elements starting and/or ending a string
String strippedInput = receivedText.replaceAll("^\\W+|\\W+$", "");
System.out.println("Stripped string: " + strippedInput);
txtView.setText(strippedInput);
txtView.requestFocus();
ListView myList=(ListView) findViewById(R.id.lstWord);
myList.setFocusableInTouchMode(true);
myList.setSelection(0);
}
对于我的问题的第二部分,关于模糊搜索,我想它或多或少涉及重新编码我的应用程序如何从其SQLlite数据库中搜索结果。这仍然是我未回答的问题。