最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語(yǔ)言字符串及strings和strconv包使用實(shí)例

 更新時(shí)間:2024年06月11日 10:34:38   作者:栗箏i  
字符串是工作中最常用的,值得我們專門的練習(xí)一下,下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言字符串及strings和strconv包使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在 Go 語(yǔ)言編程中,字符串是最基本、最常用的數(shù)據(jù)類型之一。無(wú)論是處理用戶輸入、讀取文件內(nèi)容,還是生成輸出,字符串操作無(wú)處不在。為了方便開發(fā)者對(duì)字符串進(jìn)行各種操作,Go 語(yǔ)言提供了強(qiáng)大的 strings 包和 strconv 包。strings 包包含了一系列函數(shù),用于處理和操作字符串,如查找、替換、分割、拼接等。strconv 包則專注于字符串與其他基本數(shù)據(jù)類型之間的轉(zhuǎn)換,使得數(shù)據(jù)處理更加簡(jiǎn)潔高效。在這篇文章中,我們將深入探討 Go 語(yǔ)言中的字符串處理方法,并詳細(xì)介紹 strings 包和 strconv 包的主要功能和用法,幫助您更好地掌握字符串操作技巧,提高編程效率。

1、Go 語(yǔ)言中的字符串

1.1、GO 語(yǔ)言

在 Go 語(yǔ)言中,字符串是 UTF-8 編碼字符的序列。對(duì)于 ASCII 字符,每個(gè)字符占用 1 個(gè)字節(jié),而其他字符根據(jù)需要占用 2 至 4 個(gè)字節(jié)。UTF-8 是一種廣泛使用的編碼格式,許多標(biāo)準(zhǔn)文本文件(如 XML 和 JSON)都采用這種編碼。由于 UTF-8 編碼的可變長(zhǎng)度特性,Go 語(yǔ)言中的字符串也可能占用 1 到 4 個(gè)字節(jié),這與 C++、Java 或 Python 不同(例如,Java 始終使用 2 個(gè)字節(jié))。這種設(shè)計(jì)不僅減少了內(nèi)存和硬盤空間的占用,還免去了對(duì) UTF-8 文本進(jìn)行編碼和解碼的繁瑣操作。

字符串在 Go 中是一種值類型,且值不可變。這意味著一旦創(chuàng)建了字符串,就不能修改其內(nèi)容。更深入地講,字符串是字節(jié)的定長(zhǎng)數(shù)組。

1.2、字符串字面值

Go 支持兩種形式的字符串字面值:

解釋字符串(Interpreted Strings):

  • 使用雙引號(hào)括起來。
  • 轉(zhuǎn)義字符會(huì)被替換,例如:\n 表示換行符,\t 表示制表符,\u 或 \U 表示 Unicode 字符,\\ 表示反斜杠本身。

示例:

var str = "Hello, World!\n"

非解釋字符串(Raw Strings):

  • 使用反引號(hào)括起來。
  • 支持多行字符串,轉(zhuǎn)義字符不會(huì)被替換,所有內(nèi)容都會(huì)原樣輸出。

示例:

var rawStr = `This is a raw string \n`

在 Go 中,字符串是通過長(zhǎng)度來限定的,而不是像 C/C++ 那樣通過特殊字符 \0 結(jié)束。string 類型的零值是長(zhǎng)度為零的字符串,即空字符串 ""

1.3、字符串比較和操作

字符串可以通過常見的比較運(yùn)算符(==、!=<、<=>=、>)按字節(jié)在內(nèi)存中進(jìn)行比較。可以使用 len() 函數(shù)獲取字符串的字節(jié)長(zhǎng)度:

len("hello") // 5

字符串的內(nèi)容(字節(jié))可以通過索引訪問,索引從 0 開始:

var str = "hello"
str[0] // 'h'
str[len(str)-1] // 'o'

需要注意的是,這種索引方式只對(duì)純 ASCII 字符串有效。對(duì)于 Unicode 字符,需要使用 unicode/utf8 包提供的方法。

1.4、字符串拼接

字符串可以使用 + 運(yùn)算符拼接:

var s1 = "hello"
var s2 = "world"
var s = s1 + " " + s2 // "hello world"

也可以使用 += 運(yùn)算符進(jìn)行拼接:

var s = "hello"
s += ", "
s += "world!" // "hello, world!"

在循環(huán)中使用 + 進(jìn)行字符串拼接并不是最高效的方法。更好的方法是使用 strings.Join() 函數(shù),或者使用 bytes.Buffer 進(jìn)行高效的字符串拼接。

1.5、字符串的其他操作

在 Go 語(yǔ)言中,可以將字符串視為字節(jié)(byte)的切片(slice),從而實(shí)現(xiàn)標(biāo)準(zhǔn)索引操作。使用 for 循環(huán)可以根據(jù)索引返回字符串中的字節(jié)。而使用 for-range 循環(huán)可以對(duì) Unicode 字符串進(jìn)行迭代操作。

此外,Go 語(yǔ)言提供了豐富的字符串操作函數(shù)和方法,可以在標(biāo)準(zhǔn)庫(kù)的 strings 和 unicode/utf8 包中找到。例如,可以使用 fmt.Sprint(x) 來格式化生成并返回字符串。

1.6、示例:統(tǒng)計(jì)字節(jié)和字符

創(chuàng)建一個(gè)程序用于統(tǒng)計(jì)字符串中的字節(jié)和字符數(shù)量。例如,分析字符串 "asSASA ddd dsjkdsjs dk" 和 "asSASA ddd dsjkdsjsこん dk",并解釋兩者不同的原因(提示:使用 unicode/utf8 包)。

示例代碼:

package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	str1 := "asSASA ddd dsjkdsjs dk"
	str2 := "asSASA ddd dsjkdsjsこん dk"

	fmt.Printf("String: %s\n", str1)
	fmt.Printf("Bytes: %d, Runes: %d\n", len(str1), utf8.RuneCountInString(str1))

	fmt.Printf("String: %s\n", str2)
	fmt.Printf("Bytes: %d, Runes: %d\n", len(str2), utf8.RuneCountInString(str2))
}

該程序統(tǒng)計(jì)并輸出字符串的字節(jié)數(shù)和字符(rune)數(shù),從而展示 UTF-8 編碼在處理不同字符時(shí)的差異。

2、strings 和 strconv 包

在 Go 語(yǔ)言中,字符串作為一種基本數(shù)據(jù)結(jié)構(gòu),有許多預(yù)定義的處理函數(shù)。strings 包用于對(duì)字符串進(jìn)行主要操作,而 strconv 包用于字符串與其他類型之間的轉(zhuǎn)換。

2.1、strings 包

strings 包提供了豐富的字符串操作函數(shù),以下是一些常用操作:

2.1.1、前綴和后綴

  • strings.HasPrefix(s, prefix string) bool:判斷字符串 s 是否以 prefix 開頭。
  • strings.HasSuffix(s, suffix string) bool:判斷字符串 s 是否以 suffix 結(jié)尾。

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "This is an example of a string"
	fmt.Printf("T/F? Does the string \"%s\" have prefix %s? ", str, "Th")
	fmt.Printf("%t\n", strings.HasPrefix(str, "Th"))
}

輸出:

T/F? Does the string "This is an example of a string" have prefix Th? true

2.1.2、字符串包含關(guān)系

  • strings.Contains(s, substr string) bool:判斷字符串 s 是否包含子字符串 substr。

2.1.3、判斷子字符串或字符在父字符串中出現(xiàn)的位置(索引)

  • strings.Index(s, str string) int:返回子字符串 str 在字符串 s 中的第一個(gè)出現(xiàn)位置的索引,-1 表示不包含。
  • strings.LastIndex(s, str string) int:返回子字符串 str 在字符串 s 中最后一次出現(xiàn)位置的索引,-1 表示不包含。
  • strings.IndexRune(s string, r rune) int:返回字符 r 在字符串 s 中的索引。

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "Hi, I'm Marc, Hi."

	fmt.Printf("The position of \"Marc\" is: %d\n", strings.Index(str, "Marc"))
	fmt.Printf("The position of the first instance of \"Hi\" is: %d\n", strings.Index(str, "Hi"))
	fmt.Printf("The position of the last instance of \"Hi\" is: %d\n", strings.LastIndex(str, "Hi"))
	fmt.Printf("The position of \"Burger\" is: %d\n", strings.Index(str, "Burger"))
}

輸出:

The position of "Marc" is: 8
The position of the first instance of "Hi" is: 0
The position of the last instance of "Hi" is: 14
The position of "Burger" is: -1

2.1.4、字符串替換

  • strings.Replace(str, old, new string, n int) string:將字符串 str 中的前 n 個(gè)字符串 old 替換為字符串 new,并返回一個(gè)新的字符串。如果 n = -1,則替換所有字符串 old。

2.1.5、統(tǒng)計(jì)字符串出現(xiàn)次數(shù)

  • strings.Count(s, str string) int:計(jì)算字符串 str 在字符串 s 中出現(xiàn)的非重疊次數(shù)。

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "Hello, how is it going, Hugo?"
	manyG := "gggggggggg"

	fmt.Printf("Number of H's in %s is: %d\n", str, strings.Count(str, "H"))
	fmt.Printf("Number of double g's in %s is: %d\n", manyG, strings.Count(manyG, "gg"))
}

輸出:

Number of H's in Hello, how is it going, Hugo? is: 2
Number of double g’s in gggggggggg is: 5

2.1.6、重復(fù)字符串

  • strings.Repeat(s, count int) string:返回一個(gè)新的字符串,該字符串由 count 次重復(fù)字符串 s 組成。

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	origS := "Hi there! "
	newS := strings.Repeat(origS, 3)
	fmt.Printf("The new repeated string is: %s\n", newS)
}

輸出:

The new repeated string is: Hi there! Hi there! Hi there!

2.1.7、修改字符串大小寫

  • strings.ToLower(s) string:將字符串 s 中的所有 Unicode 字符轉(zhuǎn)換為小寫。
  • strings.ToUpper(s) string:將字符串 s 中的所有 Unicode 字符轉(zhuǎn)換為大寫。

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	orig := "Hey, how are you George?"
	fmt.Printf("The original string is: %s\n", orig)
	fmt.Printf("The lowercase string is: %s\n", strings.ToLower(orig))
	fmt.Printf("The uppercase string is: %s\n", strings.ToUpper(orig))
}

輸出:

The original string is: Hey, how are you George?
The lowercase string is: hey, how are you george?
The uppercase string is: HEY, HOW ARE YOU GEORGE?

2.1.8、修剪字符串

  • strings.TrimSpace(s):剔除字符串開頭和結(jié)尾的空白符號(hào)。
  • strings.Trim(s, cutset):剔除字符串開頭和結(jié)尾的指定字符 cutset
  • strings.TrimLeft(s, cutset):剔除字符串開頭的指定字符 cutset。
  • strings.TrimRight(s, cutset):剔除字符串結(jié)尾的指定字符 cutset

2.1.9、分割字符串

  • strings.Fields(s):根據(jù)空白符分割字符串,返回一個(gè)字符串切片。
  • strings.Split(s, sep):根據(jù)指定的分隔符 sep 分割字符串,返回一個(gè)字符串切片。

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "The quick brown fox jumps over the lazy dog"
	sl := strings.Fields(str)
	fmt.Printf("Splitted in slice: %v\n", sl)
	for _, val := range sl {
		fmt.Printf("%s - ", val)
	}
	fmt.Println()

	str2 := "GO1|The ABC of Go|25"
	sl2 := strings.Split(str2, "|")
	fmt.Printf("Splitted in slice: %v\n", sl2)
	for _, val := range sl2 {
		fmt.Printf("%s - ", val)
	}
	fmt.Println()

	str3 := strings.Join(sl2, ";")
	fmt.Printf("sl2 joined by ;: %s\n", str3)
}

輸出:

Splitted in slice: [The quick brown fox jumps over the lazy dog]
The - quick - brown - fox - jumps - over - the - lazy - dog -
Splitted in slice: [GO1 The ABC of Go 25]
GO1 - The ABC of Go - 25 -
sl2 joined by ;: GO1;The ABC of Go;25

2.1.10、拼接 slice 到字符串

  • strings.Join(sl []string, sep string) string:將元素類型為 string 的 slice 使用分割符 sep 拼接成一個(gè)字符串。

2.1.11、從字符串中讀取內(nèi)容

  • strings.NewReader(str):生成一個(gè) Reader 并讀取字符串中的內(nèi)容,然后返回指向該 Reader 的指針。

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "The quick brown fox jumps over the lazy dog"
	sl := strings.Fields(str)
	fmt.Printf("Splitted in slice: %v\n", sl)
	for _, val := range sl {
		fmt.Printf("%s - ", val)
	}
	fmt.Println()
	str2 := "GO1|The ABC of Go|25"
	sl2 := strings.Split(str2, "|")
	fmt.Printf("Splitted in slice: %v\n", sl2)
	for _, val := range sl2 {
		fmt.Printf("%s - ", val)
	}
	fmt.Println()
	str3 := strings.Join(sl2,";")
	fmt.Printf("sl2 joined by ;: %s\n", str3)
}

輸出:

Splitted in slice: [The quick brown fox jumps over the lazy dog]
The - quick - brown - fox - jumps - over - the - lazy - dog -
Splitted in slice: [GO1 The ABC of Go 25]
GO1 - The ABC of Go - 25 -
sl2 joined by ;: GO1;The ABC of Go;25

更多字符串操作的文檔請(qǐng)參閱官方文檔。

2.2、strconv 包

strconv 包用于字符串與其他基本數(shù)據(jù)類型之間的轉(zhuǎn)換。

2.2.1、將其他類型轉(zhuǎn)換為字符串

  • strconv.Itoa(i int) string:將整數(shù)轉(zhuǎn)換為字符串。
  • strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string:將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串,fmt 表示格式,prec 表示精度,bitSize 用于區(qū)分 float32 和 float64。

示例:

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var i int =

 123
	var f float64 = 3.14159

	s1 := strconv.Itoa(i)
	s2 := strconv.FormatFloat(f, 'f', -1, 64)

	fmt.Printf("Integer to string: %s\n", s1)
	fmt.Printf("Float to string: %s\n", s2)
}

輸出:

Integer to string: 123
Float to string: 3.14159

2.2.2、將字符串轉(zhuǎn)換為其他類型

  • strconv.Atoi(s string) (int, error):將字符串轉(zhuǎn)換為整數(shù)。
  • strconv.ParseFloat(s string, bitSize int) (float64, error):將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)。

示例:

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var str string = "666"
	var anInt int
	var newStr string

	anInt, _ = strconv.Atoi(str)
	fmt.Printf("The integer is: %d\n", anInt)

	anInt += 5
	newStr = strconv.Itoa(anInt)
	fmt.Printf("The new string is: %s\n", newStr)
}

輸出:

The integer is: 666
The new string is: 671

strconv 包中還包含了一些輔助變量,如 strconv.IntSize,用于獲取當(dāng)前平臺(tái)下 int 類型的大?。ㄎ粩?shù))。

通過 strings 和 strconv 包的強(qiáng)大功能,Go 語(yǔ)言提供了豐富的字符串處理和轉(zhuǎn)換工具,使得開發(fā)者能夠高效地處理和轉(zhuǎn)換字符串?dāng)?shù)據(jù)。

附:go語(yǔ)言中在數(shù)字中讀取小數(shù)點(diǎn)在數(shù)字字符串的哪一位

在 Go 語(yǔ)言中,可以使用 strconv 包中的 ParseFloat 函數(shù)將字符串轉(zhuǎn)換為數(shù)字,并讀取小數(shù)點(diǎn)在字符串的哪一位。具體的使用方法如下:

import "strconv"

str := "123.456789"
num, _ := strconv.ParseFloat(str, 64) // 將[字符串](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083)轉(zhuǎn)換為 float64 類型的數(shù)字
dotIndex := strings.Index(strconv.FormatFloat(num, 'f', -1, 64), ".") // 讀取小數(shù)點(diǎn)在[字符串](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&amp;spm=1055.2569.3001.10083)中的位置

fmt.Println(dotIndex) // 輸出為 3

在 ParseFloat 函數(shù)中,第一個(gè)參數(shù)表示需要轉(zhuǎn)換為數(shù)字的字符串,第二個(gè)參數(shù)表示使用 float64 類型進(jìn)行轉(zhuǎn)換。在上面的例子中,我們將字符串轉(zhuǎn)換為數(shù)字后,使用 FormatFloat 函數(shù)讀取小數(shù)點(diǎn)在字符串中的位置。在 FormatFloat 函數(shù)中,'f' 表示格式化為浮點(diǎn)數(shù),-1 表示不限制小數(shù)位數(shù),64 表示使用 float64 類型的數(shù)字進(jìn)行格式化。然后使用 strings 包中的 Index 函數(shù)讀取小數(shù)點(diǎn)在字符串中的位置。

總結(jié)

到此這篇關(guān)于Go語(yǔ)言字符串及strings和strconv包使用的文章就介紹到這了,更多相關(guān)Go字符串strings和strconv包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語(yǔ)言基礎(chǔ)入門應(yīng)用簡(jiǎn)介及常用命令

    Go語(yǔ)言基礎(chǔ)入門應(yīng)用簡(jiǎn)介及常用命令

    這篇文章主要為大家介紹了Go語(yǔ)言基礎(chǔ)入門應(yīng)用簡(jiǎn)介及常用命令,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • golang的database.sql包和事務(wù)處理操作步驟

    golang的database.sql包和事務(wù)處理操作步驟

    事務(wù)是數(shù)據(jù)庫(kù)操作中的一個(gè)邏輯單元,由一系列的數(shù)據(jù)庫(kù)操作組成,這一系列操作要么全部執(zhí)行并且提交,要么全部回滾,確保數(shù)據(jù)的一致性和完整性,這篇文章主要介紹了golang的database.sql包和事務(wù)處理操作步驟,需要的朋友可以參考下
    2025-04-04
  • Go并發(fā)編程實(shí)現(xiàn)數(shù)據(jù)競(jìng)爭(zhēng)

    Go并發(fā)編程實(shí)現(xiàn)數(shù)據(jù)競(jìng)爭(zhēng)

    本文主要介紹了Go并發(fā)編程實(shí)現(xiàn)數(shù)據(jù)競(jìng)爭(zhēng),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 深入探索Golang中的SM4加密解密算法

    深入探索Golang中的SM4加密解密算法

    SM4加密算法在安全性、高效性、簡(jiǎn)單性、標(biāo)準(zhǔn)化和廣泛支持等方面具有優(yōu)勢(shì),適用于各種數(shù)據(jù)保護(hù)和加密應(yīng)用場(chǎng)景,這篇文章就來和大家探索一下Golang中的SM4加密解密算法吧
    2023-06-06
  • 淺析Go設(shè)計(jì)模式之Facade(外觀)模式

    淺析Go設(shè)計(jì)模式之Facade(外觀)模式

    本文將介紹外觀模式的概念、結(jié)構(gòu)和工作原理,并提供一些在Go中實(shí)現(xiàn)外觀模式的示例代碼,通過使用外觀模式,可以降低代碼的耦合度,提高代碼的可維護(hù)性和可讀性,需要的朋友可以參考下
    2023-05-05
  • golang中單向channel的語(yǔ)法介紹

    golang中單向channel的語(yǔ)法介紹

    通過消息來共享數(shù)據(jù)是golang的一種設(shè)計(jì)哲學(xué),channel則是這種哲理的體現(xiàn)。下面這篇文章主要給大家介紹了關(guān)于golang中單向channel語(yǔ)法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。
    2017-07-07
  • Goland字符串格式化樣式中“\r“的作用詳解

    Goland字符串格式化樣式中“\r“的作用詳解

    這篇文章主要介紹了Goland字符串格式化樣式中“\r“的作用,"\r"起的作用是回到行首,當(dāng)前控制臺(tái)輸出,輸出完以后回到當(dāng)前行的行首,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Go語(yǔ)言實(shí)現(xiàn)讀取文件的方式總結(jié)

    Go語(yǔ)言實(shí)現(xiàn)讀取文件的方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言實(shí)現(xiàn)讀取文件的幾個(gè)方式,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Go語(yǔ)言有一定的幫助,感興趣的小伙伴可以收藏一下
    2023-04-04
  • Go語(yǔ)言中處理錯(cuò)誤的技巧分享

    Go語(yǔ)言中處理錯(cuò)誤的技巧分享

    編寫 Go 語(yǔ)言程序時(shí),有效地處理錯(cuò)誤是至關(guān)重要的,Go 語(yǔ)言提供了一些強(qiáng)大的工具和模式來處理錯(cuò)誤,本文將介紹這些方法,以便編寫健壯的 Go 代碼,更好地處理錯(cuò)誤,需要的朋友可以參考下
    2023-09-09
  • 淺談Go語(yǔ)言中的接口類型

    淺談Go語(yǔ)言中的接口類型

    Go語(yǔ)言中接口是一種抽象的類型,本文主要介紹了淺談Go語(yǔ)言中的接口類型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08

最新評(píng)論

丰顺县| 忻州市| 肇东市| 江口县| 长治县| 逊克县| 乐陵市| 宕昌县| 广丰县| 容城县| 盐山县| 新巴尔虎右旗| 九龙坡区| 瓦房店市| 东安县| 南溪县| 和静县| 霍林郭勒市| 沭阳县| 无极县| 自贡市| 周至县| 娄底市| 奉化市| 渭南市| 宝应县| 泾川县| 卢氏县| 乐亭县| 平舆县| 监利县| 方山县| 延安市| 盱眙县| 大厂| 潼南县| 新沂市| 裕民县| 博爱县| 彰化县| 许昌县|