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

如何将指定格式的数组字符串转换为对应数组?

如何将指定字符串转换为数组形式

嘿,我来帮你搞定这个字符串转数组的需求!首先得明确我们要把这个带方括号的字符串转换成什么样的数组——是包含结构化键值对的数组,还是直接把每个键 = 值的片段作为数组元素?我两种情况都给你写个实现示例,用最常用的JavaScript和Python来演示:

情况1:转换成包含键值对对象的数组(结构化数组)

这种方式会把每个属性拆分成键和值,方便后续的逻辑处理,还能自动转换值的类型(比如数字转成Number类型)。

JavaScript实现

const inputStr = "[ name = preload cacheHits = 0 onDiskHits = 0 inMemoryHits = 0 misses = 0 size = 0 averageGetTime = 0.0 evictionCount = 0 ]";

// 1. 清理字符串:去掉首尾方括号和多余空格
const cleanedStr = inputStr.trim().slice(1, -1).trim();

// 2. 用正则匹配所有"键 = 值"格式的片段
const keyValueMatches = cleanedStr.match(/(\w+)\s*=\s*(\S+)/g) || [];

// 3. 转换成键值对对象数组,同时处理值的类型
const resultArray = keyValueMatches.map(pair => {
  const [key, rawValue] = pair.split(/\s*=\s*/);
  // 判断值的类型,数字转成Number,字符串保留原格式
  const value = isNaN(Number(rawValue)) ? rawValue.trim() : Number(rawValue);
  return { key: key.trim(), value };
});

console.log(resultArray);

输出结果会是:

[
  { key: 'name', value: 'preload' },
  { key: 'cacheHits', value: 0 },
  { key: 'onDiskHits', value: 0 },
  { key: 'inMemoryHits', value: 0 },
  { key: 'misses', value: 0 },
  { key: 'size', value: 0 },
  { key: 'averageGetTime', value: 0 },
  { key: 'evictionCount', value: 0 }
]

Python实现

import re

input_str = "[ name = preload cacheHits = 0 onDiskHits = 0 inMemoryHits = 0 misses = 0 size = 0 averageGetTime = 0.0 evictionCount = 0 ]"

# 1. 清理字符串
cleaned_str = input_str.strip()[1:-1].strip()

# 2. 匹配所有键值对
key_value_pairs = re.findall(r'(\w+)\s*=\s*(\S+)', cleaned_str)

# 3. 转换成字典列表,处理值的类型
result_array = []
for key, raw_value in key_value_pairs:
    # 尝试转换为数字(先浮点再整数)
    try:
        value = float(raw_value)
        if value.is_integer():
            value = int(value)
    except ValueError:
        value = raw_value
    result_array.append({"key": key, "value": value})

print(result_array)

情况2:直接将每个"键 = 值"片段作为数组元素

如果你只需要把原字符串里的每个属性片段拆分出来组成数组,不需要结构化处理,那实现会更简单:

JavaScript实现

const inputStr = "[ name = preload cacheHits = 0 onDiskHits = 0 inMemoryHits = 0 misses = 0 size = 0 averageGetTime = 0.0 evictionCount = 0 ]";

const cleanedStr = inputStr.trim().slice(1, -1).trim();
// 直接匹配所有"键 = 值"的片段组成数组
const resultArray = cleanedStr.match(/\w+\s*=\s*\S+/g) || [];

console.log(resultArray);

输出结果:

[
  'name = preload',
  'cacheHits = 0',
  'onDiskHits = 0',
  'inMemoryHits = 0',
  'misses = 0',
  'size = 0',
  'averageGetTime = 0.0',
  'evictionCount = 0'
]

Python实现

import re

input_str = "[ name = preload cacheHits = 0 onDiskHits = 0 inMemoryHits = 0 misses = 0 size = 0 averageGetTime = 0.0 evictionCount = 0 ]"

cleaned_str = input_str.strip()[1:-1].strip()
result_array = re.findall(r'\w+\s*=\s*\S+', cleaned_str)

print(result_array)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:47:36