在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
相关产品推荐
相关产品推荐

