如何设置通过“共享”菜单发送的文本字符串

时间:2013-04-18 18:15:16

标签: java android regex string android-intent

我使用以下代码通过“共享”菜单将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发送的文本有时包含无意义的元素或衍生物,例如:"wordword'word,lookedbooks,{ {1}}。

现在我想要的是格式化文本,使其在添加到EditText之前只包含真实单词或单词的基本形式。

我听说过tomatoesapproximate string matching,但我不知道如何将其应用到我的代码中。我想知道你是否可以给我一点帮助来解决上述问题,至少是格式化/剥离非单词元素。

提前致谢。

1 个答案:

答案 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数据库中搜索结果。这仍然是我未回答的问题。