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

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.
主站蜘蛛池模板: 黑水县| 高雄县| 汕头市| 丹阳市| 互助| 汕尾市| 江山市| 维西| 阿鲁科尔沁旗| 沽源县| 获嘉县| 镇宁| 马龙县| 河西区| 鄂托克旗| 信宜市| 彭山县| 东乡| 米泉市| 宁海县| 扬州市| 邵阳市| 长寿区| 达州市| 开江县| 柳州市| 万山特区| 百色市| 郎溪县| 剑阁县| 巢湖市| 樟树市| 杭州市| 桦川县| 宜州市| 宿迁市| 伊宁县| 奉节县| 崇文区| 陆河县| 新闻|