如何将一个句子分成单词并与另一个字符串进行比较?

时间:2016-12-12 11:43:09

标签: java android arrays string compare

我已将单位保存在.txt文件中。这些我进入数组列表。现在我想检查字符串中是否存在任何单位。

列表包含:

"units", "kg", "kilogms", "kilo", "literes", "Liter", "packets", "packet", "gms", "grams", "half kg"

就像,如果我有一个字符串 - 1kg饭,我想从这个字符串中获取数字,我想将这个句子分成单词,并希望与单位数组列表中的每个项目进行比较。如果它存在我想保存它。所以我想分别存放1公斤和米饭。 string可能包含我想修剪所有空格的任何空格并检查比较。

在数组列表中获取文本文件。

    public class ReadTextFiles {

    public static List<String> readItemNamesFile(Context context) {
        String sText = null;
        List<String> stringList;
        try{

            InputStream is = context.getResources().openRawResource(R.raw.item_names);
            //Use one of the above as per your file existing folder

            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            sText = new String(buffer, "UTF-8");

            String[] sTextArray = sText.replace("\"", "").split(",");
            stringList = new ArrayList<String>(Arrays.asList(sTextArray));
            System.out.print(stringList);
        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return stringList;

    }
}

 public void getUnits()
{
    List<String> units = new ArrayList<>();

    units = ReadTextFiles.readUnitsFile(getActivity());

    System.out.print(units.size());

}

现在我想比较字符串假设它的“1公斤马铃薯”。然后应该从数组列表中找到马铃薯。它也应该不区分大小写。

2 个答案:

答案 0 :(得分:1)

我将使用算法方法来回答问题。所以这就是:

strItem = "1kg rice";
//Run a loop through the list of units and for each unit check this
if (strItem.contains(list.get(index)))
 //Do the needful and break

答案 1 :(得分:1)

根据我的理解,这是您要求的完整解决方案:

    String measuring = "\"units\", \"kg\", \"kilogms\", \"kilo\", \"literes\", \"Liter\", \"packets\", \"packet\", \"gms\", \"grams\", \"half kg\"";
    String items = "\"Potato\", \"rice\", \"Eggs\", \"Maggi\", \"Dryfruits\", \"Maza\", \"cold drink\", \"sauce\", \"catchup\", \"coconut oil\"";
    String matching = "Kg500 Potato";//"Potato 1 kg";
    String item = "", measuringUnit = "", quantity = "";

    private void findOut() {
        String[] sMeasuringArray = measuring.replace("\"", "").split(", ");
        ArrayList<String> measuringList = new ArrayList<String>(Arrays.asList(sMeasuringArray));

        String[] sItemsArray = items.replace("\"", "").split(", ");
        ArrayList<String> itemsList = new ArrayList<String>(Arrays.asList(sItemsArray));

        String[] sMatchingArray = matching.split(" ");

        matching = matching.toUpperCase();

        for (int i = 0; i < measuringList.size(); i++) {
            if (matching.contains(measuringList.get(i).toUpperCase())) {
                measuringUnit = measuringList.get(i).trim();
                break;
            }
        }

        for (int i = 0; i < itemsList.size(); i++) {
            if (matching.contains(itemsList.get(i).toUpperCase())) {
                item = itemsList.get(i).trim();
                break;
            }
        }

        if (matching!= null) {
            String[] part = matching.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
            for (int k = 0; k < part.length; k++) {
                try {
                    Integer.parseInt(part[k]);
                    quantity = part[k];
                    break;
                } catch (Exception ex) {
                    continue;
                }
            }
        }

        /*if (sMatchingArray != null) {
            if (sMatchingArray.length == 3) {
                for (int j = 0; j < sMatchingArray.length; j++) {
                    if (measuringUnit.trim().equals(sMatchingArray[j].trim())) {
                        quantity = sMatchingArray[j - 1].trim();
                        break;
                    }
                }
            } else if (sMatchingArray.length == 2) {

                String[] part = matching.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
                for (int k = 0; k < part.length; k++) {
                    try {
                        Integer.parseInt(part[k]);
                        quantity = part[k];
                        break;
                    } catch (Exception ex) {
                        continue;
                    }
                }
            }
        }*/

        Log.e("Solution: ", "item = " + item + ", measuringUnit = " + measuringUnit + ", quantity = " + quantity);
    }