官术网_书友最值得收藏!

Find and replace

The example in this subsection will search the provided text for two variations of a given string and replace it with another string. The program will be named findReplace.go and will actually use Go regular expressions. The main reason for using the regexp.Compile() function, in this case, is that it greatly simplifies things and allows you to access your text only once.

The first part of the findReplace.go program is as follows:

package main 
 
import ( 
   "fmt" 
   "os" 
   "regexp" 
) 

The next part is as follows:

func main() { 
 
   var s [3]string 
   s[0] = "1 b 3" 
   s[1] = "11 a B 14 1 1" 
   s[2] = "b 2 -3 B -5" 
 
   parse, err := regexp.Compile("[bB]")

if err != nil { fmt.Printf("Error compiling RE: %s\n", err) os.Exit(-1) }

The previous Go code will find every occurrence of an uppercase B or a lowercase b ([bB]). Note that there is also regexp.MustCompile() that works like regexp.Compile(). However, regexp.MustCompile() does not return an error variable; it just panics if the given expression is erroneous and cannot be parsed. As a result, regexp.Compile() is a better choice.

The last part is as follows:

   for i := 0; i < len(s); i++ { 
         temp := parse.ReplaceAllString(s[i], "C") 
         fmt.Println(temp) 
   } 
} 

Here you replace each match with an uppercase C using parse.ReplaceAllString().

Executing findReplace.go generates the expected output:

$ go run findReplace.go
1 C 3
11 a C 14 1 1
C 2 -3 C -5
The awk(1) and sed(1) command-line tools can do most of the previous tasks more easily, but sed(1) and awk(1) are not general-purpose programming languages.
主站蜘蛛池模板: 翁牛特旗| 五华县| 永靖县| 泰顺县| 汉中市| 尉犁县| 南涧| 利津县| 达日县| 兴宁市| 兴安盟| 荣成市| 聊城市| 泾阳县| 遵化市| 霍林郭勒市| 鄯善县| 古交市| 富锦市| 达州市| 临海市| 垦利县| 中牟县| 泗阳县| 深水埗区| 大化| 商洛市| 曲松县| 顺平县| 金门县| 甘肃省| 安塞县| 石河子市| 南江县| 新余市| 介休市| 九寨沟县| 安乡县| 濮阳县| 沽源县| 炉霍县|