当前位置: 首页 > 面试题库 >

需要使用“ exp / utf8string”将代码转换为更高的标准库代码

孙经艺
2023-03-14
问题内容

我正在尝试从 The Go Programming Language
Phrasebook


Go编程语言短语》)中获取

一个示例,该书于2012年基于Go 1.0编写。该示例使用的exp/utf8string包现已变为unicode/utf8。我目前正在使用Go
1.2.1,并且下面的代码无法按原样编译,因为该exp/utf8string软件包现已失效:

package main
import "strings"
import "unicode"
import "exp/utf8string"
import "fmt"

func main()
{
    str := "\tthe important rôles of utf8 text\n"
    str = strings.TrimFunc(str, unicode.IsSpace)

    // The wrong way
    fmt.Printf("%s\n", str[0:len(str)/2])
    // The right way
    u8 := utf8string.NewString(str)
    FirstHalf := u8.Slice(0, u8.RuneCount()/2)
    fmt.Printf("%s\n", FirstHalf)

}

我仍然是GoLang的新手,因此我不确定如何将较早的实验软件包集成到标准库中。我做了一些研究,发现utf8string.NewString(str)现在是expvar.NewString(str),所以我将进口改为

expvar
unicode

并适当地修改了代码以调用expvar.NewString(str),但是我仍然遇到两个错误:

u8.Slice undefined (type *expvar.String has no field or method Slice)
u8.RuneCount undefined (type *expvar.String has no field or method RuneCount)

我尝试了几种不同的方法,但似乎无法使其正常工作。

应该如何为GoLang 1.2.1编写此示例代码?


问题答案:

安装包utf8string

$ go get -v code.google.com/p/go.exp/utf8string
code.google.com/p/go.exp (download)
code.google.com/p/go.exp/utf8string
$

修复程序:

package main

import (
    "fmt"
    "strings"
    "unicode"

    "code.google.com/p/go.exp/utf8string"
)

func main() {
    str := "\tthe important rôles of utf8 text\n"
    str = strings.TrimFunc(str, unicode.IsSpace)

    // The wrong way
    fmt.Printf("%s\n", str[0:len(str)/2])
    // The right way
    u8 := utf8string.NewString(str)
    FirstHalf := u8.Slice(0, u8.RuneCount()/2)
    fmt.Printf("%s\n", FirstHalf)
}

输出:

the important r
the important rô

将程序修改为仅使用Go 1.2.1标准软件包:

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "\tthe important rôles of utf8 text\n"
    str = strings.TrimSpace(str)

    // The wrong way
    fmt.Printf("%s\n", str[0:len(str)/2])
    // The right way
    r := []rune(str)
    FirstHalf := string(r[:len(r)/2])
    fmt.Printf("%s\n", FirstHalf)
}

输出:

the important r
the important rô


 类似资料:
  • 问题内容: 我正在使用jQuery的parseJSON()函数将json字符串插入变量中。问题是,它正在将我的数据变成一个对象,而不是一个二维数组。例如, 问题是,“名称”不应该是 键 (假设这是正确的术语)。相反,它应该是: 我将如何转换呢?还是有一个不同于使用for循环遍历数组索引的方法(但仍然可以像在2d数组中一样,以字符串形式访问键和值)。 编辑:这是一些正在使用的json(请注意,它的使

  • 就处理编译/链接错误而言,我是一个新手。 我正在使用一个很大的C++代码(还有一些C文件)。我已经成功地在Mac上运行了它,用G++编译。现在我需要在基于Linux的集群上运行它,因为它在我的Mac上太慢了。代码由我必须编译的几个库组成,加上我自己使用这些库的代码。 我可以使用默认的g++编译器编译集群上的所有代码。然而,不幸的是,我已经发现我需要用GCC/4.7.2进行编译,这样代码将与集群上的

  • 问题内容: 我有一个用Scala编写的应用程序,我的一些团队成员希望使用Java版本。这是一个演示应用程序,可以使用用Scala编写的另一个API,并且他们希望该应用程序的Java版本能够使用Java中的API。但是,该应用程序有些大,我不想用Java手动重排代码(他们也不想学习Scala)。是否有任何工具可以从Scala代码自动生成(可读)Java代码? 问题答案: 他们希望应用程序的Java版

  • 问题内容: 好的,所以我有一个来自EEG扫描的数据文件(一个二进制文件,data.eeg),在matlab中,用于读取文件并绘制部分数据的代码如下所示: 这是我的“翻译”尝试 这就是让我感到困惑的地方。根据文档,matlab的fread是一种通过fread(loaded_file,size,data_type)读取二进制文件的方法。python中的替代方法是使用numpy的fromfile并使用内

  • 随着Hibernate 5.2.2中Criteria类中createCriteria()的弃用,它的许多相关函数无法再使用。我找到了标准的另一种用法。createAlias(String,String)和从以下链接添加限制在Hibernate 5中弃用了createCriteria方法,但我找不到如何在JPA criteria中替换criteria中可用的以下函数: 请给我提供一种使用JPA标准A

  • 我对PHP非常非常新(今天早上开始),所以请原谅我的无知和缺乏常识。 我正在开发一个网站,该网站已经具备了获取表单数据并将其存储在MySQL数据库中的功能。我现在想要每次加载某个页面时从数据库中提取所述数据,并使用相同的方法将一些HTML div应用到我的页面中。本质上我有3个卡预定义在源代码,但我希望它添加更多的卡到页面,一旦它加载,只要有行在我的MySQL表。 这是我用来部分实现这一点的代码: