You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在存入Firestore的地址各信息段之间添加空格分隔?

解决方案

你的代码问题在于拼接地址字段时未添加分隔符,导致多字段内容直接连为一体。结合你原代码只有所有字段全部填写完成才会执行存储的逻辑,有两种修改方案可选:


方案1:仅添加空格分隔符,保持存储单个地址字符串

直接使用格式化字符串生成带空格的完整地址,无需多个if判断拼接,代码更简洁:

@Override
public void onClick(View v) {
    String userName = name.getText().toString().trim();
    String userAddress = address.getText().toString().trim();
    String userCity = city.getText().toString().trim();
    String userCode = postalCode.getText().toString().trim();
    String userNumber = phoneNumber.getText().toString().trim();

    if (!userName.isEmpty() && !userAddress.isEmpty() && !userCity.isEmpty() && !userCode.isEmpty() && !userNumber.isEmpty()){
        // 直接用格式化字符串拼接,各字段之间加空格
        String final_address = String.format("%s %s %s %s %s", userName, userCity, userAddress, userCode, userNumber);
        
        Map<String,String> map = new HashMap<>();
        map.put("userAddress",final_address);

        firestore.collection("CurrentUser").document(auth.getCurrentUser().getUid())
                .collection("Address").add(map).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
            @Override
            public void onComplete(@NonNull Task<DocumentReference> task) {
                if (task.isSuccessful()){
                    Toast.makeText(AddAddressActivity.this, "Address Added", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }else {
        Toast.makeText(AddAddressActivity.this, "Kindly Fill All Fields", Toast.LENGTH_SHORT).show();
    }
}

方案2(更推荐):分字段存储到Firestore

Firestore本身支持多字段存储,无需提前把所有信息拼成一个字符串。分开存储后后续需要单独提取手机号、邮编等信息时无需拆分地址字符串,灵活度更高:

@Override
public void onClick(View v) {
    String userName = name.getText().toString().trim();
    String userAddress = address.getText().toString().trim();
    String userCity = city.getText().toString().trim();
    String userCode = postalCode.getText().toString().trim();
    String userNumber = phoneNumber.getText().toString().trim();

    if (!userName.isEmpty() && !userAddress.isEmpty() && !userCity.isEmpty() && !userCode.isEmpty() && !userNumber.isEmpty()){
        Map<String,String> map = new HashMap<>();
        // 每个字段单独存入Map
        map.put("userName", userName);
        map.put("userCity", userCity);
        map.put("userAddress", userAddress);
        map.put("postalCode", userCode);
        map.put("phoneNumber", userNumber);

        firestore.collection("CurrentUser").document(auth.getCurrentUser().getUid())
                .collection("Address").add(map).addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
            @Override
            public void onComplete(@NonNull Task<DocumentReference> task) {
                if (task.isSuccessful()){
                    Toast.makeText(AddAddressActivity.this, "Address Added", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }else {
        Toast.makeText(AddAddressActivity.this, "Kindly Fill All Fields", Toast.LENGTH_SHORT).show();
    }
}

后续需要展示完整地址时,再从Firestore取出各字段,按需求拼接即可,还可以自定义分隔符(比如逗号、换行等)适配不同展示场景。


内容的提问来源于stack exchange,提问作者Mr Rats

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:00:02