iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >将带有字符串键/值的文件转换为 Go 映射
  • 475
分享到

将带有字符串键/值的文件转换为 Go 映射

2024-04-05 00:04:53 475人浏览 薄情痞子
摘要

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《将带有字符串键/值的文件转换为

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《将带有字符串键/值的文件转换为 Go 映射》,文章讲解的知识点主要包括,如果你对golang方面的知识点感兴趣,就不要错过编程网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我有一个文件,其中包含由 = 符号分隔的字符串键/值对。它看起来像这样:

"some.key" = "a cool value.";
"some.other.key" = "a cool value with %@ chars and \n. another thing.";
"escaped.key" = "a cool \"value\".";
"multiline.key.value" = "1. first sentence is "cool"\
2. second sentence\
3. third sentence\
4. fourth sentence";

请注意,值内部可以包含转义引号,并且它们也可以跨越多行。

我已经尝试过基本的引号匹配,但它不能处理值中的转义引号等...这是我目前正在尝试的:

file, err := ioutil.ReadFile("/my/string/file")
if err != nil {
    log.Fatal(err)
}

re := regexp.MustCompile(`".*?"`)
match := re.FindAllString(string(file), -1)
fmt.Println(match)

如有任何帮助,我们将不胜感激:d


解决方案


另一种方法 - 您可以使用带有自定义 split function 的扫描仪来按对分隔符 ; 进行分割并扫描每个单独的密钥对。然后用“-”分割键值对文本以分割键和值。

file, err := os.open("/my/string/file")
if err != nil {
    log.fatal(err)
}
defer f.close()

scanner := bufio.newscanner(f)
scanner.split(customsplitfunc)
for scanner.scan() {
    fmt.println("key-value pair: ", scanner.text())
    //split scanner.text() by "=" to split key and value
}

并定义customsplitfunc如下

func customsplitfunc(data []byte, ateof bool) (advance int, token []byte, err error) {
    if ateof && len(data) == 0 {
        return 0, nil, nil
    }

    if ateof {
        return len(data), data, nil
    }

    //; followed by newline is the k-v pair delimiter
    if i := strings.index(string(data), ";\n"); i >= 0 {
        //skip the delimiter in advancing to the next pair
        return i + 2, data[0:i], nil
    }
    return
}

我认为 (?m)^"([^"]+)"\s*=\s*"(([^"]|(\\")|(\\\n))+ )";$ 做你想要的。 将其与 findallstringsubmatch 一起使用,它将返回所有匹配对。请注意,如果任何输入的语法无效,则整个内容将不匹配,因此这可能不完全是您想要的。

func main() {
    re := regexp.MustCompile(`(?m)^"([^"]+)"\s*=\s*"(([^"]|(\\")|(\\\n))+)";$`)
    matches := re.FindAllStringSubmatch(`"some.key" = "A cool value.";
"some.other.key" = "A cool value with %@ chars and \n. Another Thing.";
"escaped.key" = "A cool \"value\".";
"multiline.key.value" = "1. First sentence is \"cool\"\
2. Second sentence\
3. Third sentence\
4. Fourth sentence";
`, -1)
    for _, m := range matches {
        fmt.Printf("%q %q\n", m[1], m[2])
    }
}

(我在您输入的第四行添加了缺少的反斜杠。)

请参阅 https://play.golang.org/p/ZHV8jpg17nY。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《将带有字符串键/值的文件转换为 Go 映射》文章吧,也可关注编程网公众号了解相关技术文章。

您可能感兴趣的文档:

--结束END--

本文标题: 将带有字符串键/值的文件转换为 Go 映射

本文链接: https://www.lsjlt.com/news/596202.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 将带有字符串键/值的文件转换为 Go 映射
    编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天编程网就整理分享《将带有字符串键/值的文件转换为 ...
    99+
    2024-04-05
  • 将字符串转换为字符串值的类型
    php小编百草在这里为大家介绍如何将字符串转换为不同类型的值。在编程中,我们经常需要将字符串转换为其他类型,比如整数、浮点数、布尔值等。PHP提供了一系列内置的函数和方法来实现这个转换...
    99+
    2024-02-11
  • 在Golang中将确定的字符串转换为键和值为“=”的JSON
    本篇文章向大家介绍《在Golang中将确定的字符串转换为键和值为“=”的JSON》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。问题内容如何将这种字符串转换为json(golang) st...
    99+
    2024-04-04
  • sql怎么将字符串转换为数值
    在SQL中,你可以使用CAST或CONVERT函数将字符串转换为数值。以下是两种方法的示例: 使用CAST函数: SELECT ...
    99+
    2024-04-09
    sql
  • JavaScript中怎么将值转换为字符串
    这篇文章给大家介绍JavaScript中怎么将值转换为字符串,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言如果您关注Airbnb的样式指南,首选方法是使用“String()”它也是...
    99+
    2024-04-02
  • JavaScript怎么将布尔值转换为字符串
    这篇文章主要讲解了“JavaScript怎么将布尔值转换为字符串”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript怎么将布尔值转换为字符串”...
    99+
    2024-04-02
  • PHP中怎么将字符串转换为数值
    今天就跟大家聊聊有关PHP中怎么将字符串转换为数值,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。当一个字符串被当作数字来求值时,根据以下规则来决定结果的类型和值。如果包括“.”,“e...
    99+
    2023-06-17
  • 在 PHP 中将字符串转换为布尔值
    本文将介绍几种在 PHP 中将字符串转换为布尔值的方法。 在 PHP 中使用 settype() 函数将字符串转换为布尔值 我们可以使用 settype() 函数将字符串转换为 PHP 中的布...
    99+
    2024-02-27
  • MyBatis Xml映射文件之字符串替换方式
    目录MyBatis Xml映射文件字符串替换字符串替换举个例子Mybatis中字符串替换问题MyBatis Xml映射文件字符串替换 字符串替换 默认情况下,使用 #{} 格式的语法...
    99+
    2024-04-02
  • GO 怪异将 Btye 数组从 MD5 哈希值转换为字符串
    问题内容 有人可以告诉我哪里出了问题吗? 我无法通过字符串转换来转换由哈希求和函数生成的字节数组,我必须使用 sprintf。 这是代码片段: f, _ := os.Open(file...
    99+
    2024-02-06
  • php将数组的值转为字符串
    PHP是一种广泛使用的开源脚本语言,常用于Web开发。在PHP中,数组是一种非常常用的数据类型。数组通常包含多个值,而有时我们需要将这些值转换为字符串进行存储或输出。在这篇文章中,我们将探讨如何将数组的值转换为字符串。implode函数在P...
    99+
    2023-05-22
  • PHP如何将带引号的可打印字符串转换为8位字符串
    这篇文章将为大家详细讲解有关PHP如何将带引号的可打印字符串转换为8位字符串,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。将带引号的可打印字符串转换为 8 位字符串 PHP 提供了 escapeshell...
    99+
    2024-04-02
  • php如何将数组转换为带逗号的字符串
    这篇文章主要讲解了“php如何将数组转换为带逗号的字符串”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何将数组转换为带逗号的字符串”吧!php中,可以使用implode()函数将数组...
    99+
    2023-06-30
  • PHP如何将8位字符串转换为带引号的可打印字符串
    这篇文章将为大家详细讲解有关PHP如何将8位字符串转换为带引号的可打印字符串,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如何将 8 位字符串转换为带引号的可打印字符串 简介 PHP 提供了多种方法来将 ...
    99+
    2024-04-02
  • 怎么在JavaScript中将布尔值转换为字符串
    怎么在JavaScript中将布尔值转换为字符串?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript有什么特点1、js属于一种解释性脚本语言;2、...
    99+
    2023-06-14
  • php如何将十六进制值转换为字符串
    这篇文章给大家分享的是有关php如何将十六进制值转换为字符串的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在php中,可以利用hex2bin()函数来将十六进制值转换为字符串,该函数的作用就是把十六进制...
    99+
    2023-06-21
  • 将字符串数组转换为字符串的内置函数
    php小编香蕉为您介绍一种非常便捷的方法——将字符串数组转换为字符串的内置函数。在开发过程中,我们经常需要将一个包含多个字符串的数组合并成一个字符串,这时就可以使用implode()函...
    99+
    2024-02-09
    字符串数组
  • 迭代字符串并用映射值替换原始字符串中的值的惯用方法
    php小编新一带来了一种迭代字符串并用映射值替换原始字符串中的值的惯用方法。这种方法可以帮助开发者简化字符串操作的过程,提高开发效率。通过使用映射数组,开发者可以定义一组键值对,然后使...
    99+
    2024-02-10
    键值对
  • MyBatis Xml映射文件中的字符串替换方式是什么
    这篇文章将为大家详细讲解有关MyBatis Xml映射文件中的字符串替换方式是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MyBatis Xml映射文件字符串替换字符串替换默...
    99+
    2023-06-21
  • PHP将字符串的首字母转换为小写
    这篇文章将为大家详细讲解有关PHP将字符串的首字母转换为小写,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。将 PHP 字符串的首字母转换为小写 引言 在 PHP 中,将字符串的首字母转换为小写是一个常见的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作