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

Java实现字符串拆分三字段并导出至CSV的问题求助

解决字符串拆分匹配并写入CSV的问题

我来帮你搞定这个问题!你的代码现在没法正常运行,核心原因是错误地用整个列表和输入字符串做相等比较,咱们一步步来修复:

一、原代码的问题分析

你写的unit_list.equals(input)和quantity_list.equals(input)完全不对——这是在把整个列表和单个字符串做相等判断,类型和内容都不匹配,自然永远不会返回true。咱们需要改成检查输入字符串里的子元素是否存在于列表中。

二、完整实现方案

下面是可以直接运行的代码,包含字符串拆分、列表匹配、CSV写入全流程:

1. 核心思路

  • 把输入字符串按空格拆分,分离出数量、单位、物品名(支持物品名带空格的情况)
  • 用contains()方法验证数量和单位是否在目标列表里
  • 用Java原生的FileWriter把结果写入CSV文件

2. 完整代码

import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class ItemCSVExporter {
    public static void main(String[] args) {
        // 定义匹配列表
        List<String> unitList = Arrays.asList("g", "kg", "ml", "l");
        List<String> quantityList = Arrays.asList("Full", "Quarter", "Half", "3 Quarter", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
        String input = "1 kg potatoes";
        
        // 拆分输入字符串:处理物品名带空格的情况
        String[] inputParts = input.split(" ");
        String quantity = inputParts[0];
        String unit = inputParts[1];
        // 拼接从第2个索引开始的所有部分作为物品名
        String item = String.join(" ", Arrays.copyOfRange(inputParts, 2, inputParts.length));
        
        // 验证数量和单位是否合法
        boolean isQuantityValid = quantityList.contains(quantity);
        boolean isUnitValid = unitList.contains(unit);
        
        if (isQuantityValid && isUnitValid) {
            // 写入CSV文件
            try (FileWriter csvWriter = new FileWriter("item_output.csv")) {
                // 写入表头
                csvWriter.append("Quantity,Unit,Item\n");
                // 写入数据行
                csvWriter.append(String.format("%s,%s,%s\n", quantity, unit, item));
                System.out.println("CSV文件已成功生成!");
            } catch (IOException e) {
                System.err.println("写入CSV时出错:" + e.getMessage());
                e.printStackTrace();
            }
        } else {
            // 验证不通过时的提示
            if (!isQuantityValid) {
                System.out.println("无效的数量:" + quantity);
            }
            if (!isUnitValid) {
                System.out.println("无效的单位:" + unit);
            }
        }
    }
}

3. 运行结果

生成的item_output.csv内容如下:

Quantity,Unit,Item
1,kg,potatoes

4. 扩展说明

如果你的输入里物品名包含空格(比如"2 kg sweet potatoes"),代码依然能正常工作——因为我们用String.join把拆分后的剩余部分重新拼接成了完整的物品名,不用担心拆分错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:24:09