首页 > 解决方案 > 如何删除特定符号之前的字符

问题描述

我有以下代码在特定符号后拆分或删除字符:

评级 = rating.split("\s*=\s*")[0];

我也想知道是否有办法为每个医疗诊所添加评级数字?我有一个名为 Rating 的孩子和另一个名为 rating by username 的孩子...我正在尝试调用 getUID,我假设这将返回所有提交评分的用户,并且通过使用 split 方法,我可以加分吗?我也可以先显示评分最高的医疗诊所吗?我确实尝试使用 orderbychild("Rating") 但它首先显示评分最低的医疗诊所。我想,我还没有添加评分...

DatabaseReference reference = FirebaseDatabase.getInstance().getReference(); // getReference() is the root
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            list.clear();
            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {

                String rating = email.split("\\s*@\\s*")[0];

                System.out.println(rating);

                int rate = (int) snapshot.child("Rating by" + rating).getValue();


             //   rating.substring(rating.indexOf("=")+1);



              //  String rating = rating.Substring(rating.IndexOf('.') + 1);

              //  rating = rating.replaceAll("[^\\d.]", "");

                Information info = snapshot.getValue(Information.class);
                assert info != null;
                String txt = "Medical Clinic" + info.getName() + "Rating" + rate;
                list.add(txt);
             //   System.out.println(rating);
                //      list.add(snapshot.getValue().toString());
            }

            adapter.notifyDataSetChanged();

        }

在此处输入图像描述

我还需要找到一种方法来删除 = 符号之前的所有字符....

在此处输入图像描述

标签: androidfirebase-realtime-database

解决方案


要获得评分最高的节点,您需要使用:

reference.orderByChild("Rating").limitToLast(10).addValueEventListener(new ValueEventListener() {

这将为您提供按升序排列的前 10 个评级节点。

没有 API 可以按降序获取它们,因此您要么必须在应用程序代码中反转结果,要么在数据库中存储一个反转的值以对其进行排序。有关这方面的更多信息,请参阅:Android 中的 Firebase 数据描述排序


推荐阅读