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

在TypeScript中将指定字符串转换为键值对的方法

在TypeScript中将指定字符串转为键值对

目标字符串:

TotalCount:100,PageSize:10,CurrentPage:1,TotalPages:10,HasNext:true,HasPrevious:false

第一步:定义类型接口

为保证TypeScript类型安全,先对应数据结构定义接口:

interface PaginationInfo {
  TotalCount: number;
  PageSize: number;
  CurrentPage: number;
  TotalPages: number;
  HasNext: boolean;
  HasPrevious: boolean;
}

方法一:手动拆分解析(结构固定时推荐)

通过拆分字符串、逐个转换值类型生成键值对对象:

const str = "TotalCount:100,PageSize:10,CurrentPage:1,TotalPages:10,HasNext:true,HasPrevious:false";

function parsePaginationStr(str: string): PaginationInfo {
  const result: Partial<PaginationInfo> = {};
  // 按逗号分割成单个键值对
  const keyValuePairs = str.split(',');

  keyValuePairs.forEach(pair => {
    // 按冒号分割键和值
    const [key, rawValue] = pair.split(':');
    if (!key || rawValue === undefined) return;

    // 根据键的类型做对应转换
    switch (key) {
      case 'TotalCount':
      case 'PageSize':
      case 'CurrentPage':
      case 'TotalPages':
        result[key] = Number(rawValue) as PaginationInfo[keyof PaginationInfo];
        break;
      case 'HasNext':
      case 'HasPrevious':
        result[key] = rawValue === 'true' as PaginationInfo[keyof PaginationInfo];
        break;
    }
  });

  return result as PaginationInfo;
}

// 使用示例
const paginationData = parsePaginationStr(str);

方法二:正则匹配解析(灵活处理格式)

用正则批量匹配所有键值对,再统一处理类型转换:

const str = "TotalCount:100,PageSize:10,CurrentPage:1,TotalPages:10,HasNext:true,HasPrevious:false";

function parsePaginationStr(str: string): PaginationInfo {
  const result: Partial<PaginationInfo> = {};
  // 匹配"键:值"格式,值支持数字、true/false
  const regexPattern = /(\w+):(\d+|true|false)/g;
  let matchResult;

  // 循环匹配所有键值对
  while ((matchResult = regexPattern.exec(str)) !== null) {
    const [, key, rawValue] = matchResult;
    // 判断值类型并转换
    if (!isNaN(Number(rawValue))) {
      result[key as keyof PaginationInfo] = Number(rawValue) as any;
    } else {
      result[key as keyof PaginationInfo] = rawValue === 'true' as any;
    }
  }

  return result as PaginationInfo;
}

// 使用示例
const paginationData = parsePaginationStr(str);

注意事项

  • 如果字符串中存在空格(比如TotalCount: 100),可先预处理去除空格:str.replace(/\s+/g, ''),或在拆分/正则中加入空格匹配规则
  • 若字符串格式不稳定,建议添加错误处理逻辑(比如值转换失败时抛出提示)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:24:10