/
PhoneticNotation_jp.go
69 lines (66 loc) · 2.29 KB
/
PhoneticNotation_jp.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package main
import "fmt"
import "io/ioutil"
import "strings"
import "unicode/utf8"
import "regexp"
import "os"
func main() {
f, err := ioutil.ReadFile("./japanese.txt")
m := map[string]string{}
if err == nil {
allString := string(f)
restpart := allString
for strings.Index(restpart, "(") != -1 {
word1_end_idx := strings.Index(restpart, "(")
beginpart := restpart[0:word1_end_idx]
restpart = restpart[word1_end_idx+1:]
word1_begin_idx := strings.LastIndex(beginpart, " ")
key := beginpart[word1_begin_idx+1 : word1_end_idx]
roma1_end_idx := strings.Index(restpart, ")")
val := restpart[:roma1_end_idx]
m[key] = val
}
}
f, err = ioutil.ReadFile("./source.txt")
if err == nil {
allString := string(f)
restpart := strings.TrimSpace(allString)
var output, announce string
for len(restpart) > 0 {
_, length1 := utf8.DecodeRuneInString(restpart)
_, length2 := utf8.DecodeRuneInString(restpart[length1:])
length2 += length1
fmt.Println("length1:", length1)
fmt.Println("length2:", length2)
if m[restpart[:length2]] != "" {
output = strings.Join([]string{output, restpart[:length2], m[restpart[:length2]]}, "")
announce = strings.Join([]string{announce, m[restpart[:length2]]}, " ")
restpart = restpart[length2:]
} else if m[restpart[:length1]] != "" {
output = strings.Join([]string{output, restpart[:length1], m[restpart[:length1]]}, "")
announce = strings.Join([]string{announce, m[restpart[:length1]]}, " ")
restpart = restpart[length1:]
} else if restpart[:length1] == "\n" {
//fmt.Println(1111)
announce = strings.Join([]string{announce, "\r\n"}, "")
restpart = restpart[length1:]
} else if restpart[:length1] == " " {
announce = strings.Join([]string{announce, " "}, "")
output = output + " "
restpart = restpart[length1:]
} else {
output = strings.Join([]string{output, restpart[:length1]}, "")
engletterreg := regexp.MustCompile("[a-zA-Z0-9]")
announce = strings.Join([]string{announce, engletterreg.FindString(restpart[:length1])}, "")
restpart = restpart[length1:]
}
}
// for key, val := range m {
// fmt.Println(1, key, 2, val)
// }
fmt.Println(m)
output = strings.Join([]string{output, announce}, "\r\n")
ioutil.WriteFile("./output.txt", []byte(output), os.ModeAppend)
}
}