【问题标题】:concatenate array to string from firestore将数组连接到来自firestore的字符串
【发布时间】:2020-07-25 13:59:36
【问题描述】:

我在 Firestore 中存储了一些数据,如下所示:

我现在想获取这些数据并创建一个字符串:

David John Josh

单词之间用空格隔开。

我通过以下方式获取此数据:

queryNames.get().addOnCompleteListener( task -> {
    if (task.isSuccessful()) {
        QuerySnapshot snapshot = task.getResult();
        for (int i = 0; i < snapshot.size(); i++){
            String Names = snapshot.getDocuments().get( i ).get( "Names" ) );
        }
        if (snapshot.isEmpty()){

        }

    }
} );

如何将这些单词连接成一个字符串?

谢谢

【问题讨论】:

    标签: java android string firebase google-cloud-firestore


    【解决方案1】:

    当您从文档中获取Names 字段时,您会返回一个数组或List。

    因此您可以对其进行迭代并将各个字符串/名称与以下内容连接:

    queryNames.get().addOnCompleteListener( task -> {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                // Get the list of names from the document
                List<String> namesList = (List<String>) document.get("Names");
    
                // Concatenate all the names into a single string
                String names = String.join(", ", namesList)
            }
        }
    });
    

    【讨论】:

    • Used TextUtils.join(" ", namesList) 并且它完成了这项工作。谢谢
    【解决方案2】:

    您可以使用StringBuilder 将所有名称连接在一起。

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < snapshot.size(); i++){
        if(i != 0) sb.append(' ');
        String name= snapshot.getDocuments().get( i ).get( "Names" ) ;
        sb.append(name);
    }
    String result = sb.toString();
    

    【讨论】:

      【解决方案3】:

      好吧,我不知道 Firestore 是如何工作的,但如果你需要连接,那么你可以这样做:

      queryNames.get().addOnCompleteListener( task -> {
          if (task.isSuccessful()) {
              QuerySnapshot snapshot = task.getResult();
              String result = "";
              for (int i = 0; i < snapshot.size(); i++){
                  result += snapshot.getDocuments().get( i ).get( "Names" ) ) + " ";
              }
              if (snapshot.isEmpty()){
      
              }
          }
      } );
      

      或者,您可以:

      • 使用 StringBuilder 代替 java 连接。
      • 将数据存储在List&lt;String&gt; 并使用list.stream.collect(Collectors.joining(" "))

      【讨论】:

        猜你喜欢
        • 2018-05-08
        • 2013-10-03
        • 2019-10-28
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 2017-01-19
        • 2011-02-18
        • 1970-01-01
        相关资源
        最近更新 更多