Манипулација стринговима је фундаментална у развоју софтвера; већина програмских језика ипак обезбеђује тип стринга. Стринг је низ знакова: слова, бројева и симбола.
Манипулација стринговима је згодна за различите апликације, од обраде текста и анализе података до веб развоја. Популарне операције манипулације стринговима су конкатенација, валидација података, екстракција и форматирање. Го обезбеђује пакет за манипулацију стринговима под називом „стрингс“ у стандардној библиотеци.
Тхе стрингс Пацкаге
Тхе жице пакет пружа разне корисне функције за манипулацију стринговима и друге операције. Пакет укључује функционалност за операције подстрингова, скраћивање, упоређивање стрингова, конверзију низова, прављење низова, раздвајање и још много тога.
Пакет стрингова можете увести тако што ћете навести име пакета на листи увоза.
увоз"жице"
Тражење подстрингова
Тхе жице пакет пружа три функције за тражење подстрингова: тхе Садржи функција, тхе ЦонтаинсАни функција, и ЦонтаинсРуне функција.
Тхе Садржи функција проверава да ли наведени стринг садржи подниз. Тхе ЦонтаинсАни функција проверава да ли стринг садржи знакове у поднизу, а ЦонтаинсРуне функција проверава да ли стринг садржи руну (уникод карактер).
увоз (
"фмт"
"жице"
)фунцглавни() {
аСтринг := "Здраво Свете!"
подниз := "Свет"
знакова := "аеиоу"
аРуне := 'о'
фмт. Принтлн (стрингови. Садржи (аСтринг, подниз)) // Излаз: истина
фмт. Принтлн (стрингови. ЦонтаинсАни (аСтринг, знакови)) // Излаз: истина
фмт. Принтлн (стрингови. ЦонтаинсРуне (аСтринг, аРуне)) // Излаз: истина
}
Можете да преузмете индекс подниза са Индекс, ИндекАни, ИндекБите, и ИндекФунц функције. Тхе Индекс функција враћа индекс подниза, ако се појављује у другом датом низу. Тхе ИндекАни функција враћа индекс прве инстанце Уницоде кодна тачка или -1 ако ниједан од ликова није присутан.
увоз (
"фмт"
"жице"
)фунцглавни() {
аСтринг := "Здраво Свете!"
подниз := "свет"
знакови := "свет"
битеЦхарацтер := бајт('о')
аРуне := руне('о')фмт. Принтлн (стрингови. Индекс (аСтринг, подниз)) // Излаз: 7
фмт. Принтлн (стрингови. ИндекАни (аСтринг, знакови)) // Излаз: 7
фмт. Принтлн (стрингови. ИндекБите (аСтринг, битеЦхарацтер)) // Излаз: 4
ф := фунц(р руне)боол {
повратак р == 'о'
}
фмт. Принтлн (стрингови. ИндекФунц (аСтринг, ф)) // Излаз: 4
фмт. Принтлн (стрингови. ИндекРуне (аСтринг, аРуне)) // Излаз: 4
}
ИндекБите враћа индекс прве инстанце бајт карактера у низу или -1. Тхе ИндекФунц функција враћа индекс у стринг прве Уницоде тачке која задовољава дату функцију. Коначно, ИндекРуне функција враћа индекс прве инстанце Уницоде кодне тачке руне.
Замена подстрингова у Го
Тхе Заменити и Замените функција помоћ при замени подстрингова. Тхе Заменити функција узима стринг, оригинални подниз и замену и неколико замена. Тхе Замените функција узима само стринг, почетни подниз и замену.
увоз (
"фмт"
"жице"
)
фунцглавни() {
тхеСтринг := „Ово је тест стринг који треба изменити.“
фмт. Принтлн (стрингови. Замени (Стринг, "је", "био", 1))
фмт. Принтлн (стрингови. Замени (Стринг, "је", "био", -1))
фмт. Принтлн (стрингови. Замени све (стринг, "је", "био"))
}
Приметите да можете да користите и Реплаце и РеплацеАлл да замените свако појављивање унутар стринга.
Цепање и спајање низова
Тхе жице пакет садржи Разделити, СплитАфтер, СплитАфтерН, и СплитН функције за раздвајање стрингова које враћају део стрингова.
Тхе Разделити метода дели помоћу одређеног граничника. Слично као Разделити метод, тхе СплитАфтер метода дели стринг, али укључује сепаратор у своје резултате.
увоз (
"фмт"
"жице"
)фунцглавни() {
с := „Ово је тестни низ који треба поделити.“
фмт. Принтлн (стрингови. Сплит (с, " "))
фмт. Принтлн (стрингови. СплитАфтер (с, " "))
фмт. Принтлн (стрингови. СплитАфтерН(с, " ", 3))
фмт. Принтлн (стрингови. СплитН(с, " ", 3))
}
Тхе СплитАфтерН метода је слична оној СплитАфтер функција осим што функција дели стринг на одређени максимум подстрингова. Тхе СплитН метода дели стринг на одређени максимални број без укључивања сепаратора у подстрингове.
Можете спојити низове помоћу Придружити функција из жице пакет. Тхе Придружити функција узима исечак и граничник.
увоз (
"фмт"
"жице"
)
фунцглавни() {
фмт. Принтлн (стрингови. Придружити([]низ{"Здраво", "Свет"}, ":"))
// Излаз: "Здраво: Свет"
}
Манипулисање случајним низом
Манипулисање малим словима је згодно за многе задатке, укључујући рад са документацијом. Можете користити Спустити функција за мала слова, ТоУппер функција за велика слова, и ТоТитле функција за велика слова.
увоз (
"фмт"
"жице"
)фунцглавни() {
с := "Ово је тест стринг."
фмт. Принтлн (стрингови. ТоЛовер (с) // ово је тест стринг.
фмт. Принтлн (стрингови. ТоУппер (с) // ОВО ЈЕ ТЕСТНИ НИЗ.
фмт. Принтлн (стрингови. ТоТитле (с) // ОВО ЈЕ ТЕСТНИ НИЗ.
}
Стринг Буилдинг у Го
Градитељи низова су тип који омогућава ефикасну конкатенацију у Го. Тхе бајтова. Буффер типе је један од најчешће коришћених градитеља стрингова. Тхе бајтова. Буффер метод имплементира бафер бајтова који се може повећати са методама читања и писања за операције, омогућавајући ефикасно додавање низова без потребе за прављењем нових копија, за разлику од + операција и Придружити функција.
увоз (
"фмт"
"жице"
)фунцглавни() {
вар б жице. Буилдер// Напиши неке стрингове у буилдер
б. ВритеСтринг("Ово")
б. ВритеСтринг("је")
б. ВритеСтринг("а")
б. ВритеСтринг("тест ")
б. ВритеСтринг("низ.")// Добија дужину градитеља
фмт. Принтлн (б. Лен())// Конвертуј буилдер у стринг
стр := б. Низ()
фмт. Принтлн (стр)// Ресетујте буилдер
б. Ресетовати()// Напиши још неке стрингове у буилдер
б. ВритеСтринг("Ово")
б. ВритеСтринг("је")
б. ВритеСтринг("други ")
б. ВритеСтринг("тест ")
б. ВритеСтринг("низ.")// Добити капацитет градитеља
фмт. Принтлн (б. Капа())
// Поново конвертуј буилдер у стринг
стр = б. Низ()
фмт. Принтлн (стр)
}
Тхе главни функција показује како можете да користите жице. Буилдер тип за ефикасну изградњу струна. Тхе ВритеСтринг методом Стрингс. Буилдер типе проширује низ низова један на други, а Лен метода враћа дужину изграђеног низа.
Тхе Низ метода конвертује садржај градитеља у стринг, а Ресетовати метода ресетује градитељ за додатну изградњу низа.
Тхе Капа метода враћа капацитет градитеља. Ово је тренутни простор који је Го доделио стрингу.
Подрезивање струна у Го
Тхе жице пакет такође пружа функционалност за сечење жица у Трим, ТримЛефт, ТримПрефик, ТримРигхт, ТримСпаце, и ТримСуффик функције.
увоз (
"жице"
"фмт"
)фунцглавни() {
// цео низ
с := "Здраво Свете!"// елемент за трим
префикс := "Здраво"
суфикс := "Свет!"// исеца низ према специфицираном скупу трим
фмт. Принтлн (стрингови. Трим (с, "!"))// сече размацима на почетку и на крају низа
фмт. Принтлн (стрингови. ТримСпаце (с)// сече од левог низа према наведеном скупу трим
фмт. Принтлн (стрингови. ТримЛефт (с, "Здраво"))// сече из десног низа помоћу одређеног трим скупа
фмт. Принтлн (стрингови. ТримРигхт (с, "Свет!"))// сече префикс
фмт. Принтлн (стрингови. ТримПрефик (с, префикс))
// сече одређени суфикс
фмт. Принтлн (стрингови. Тримсуфикс (с, суфикс))
}
Тхе главни функција показује како можете да користите функције за сечење. Различите функције уређују с низ на различите начине:
Можете да форматирате стрингове у Го
Го стандардна библиотека такође пружа фмт пакет за форматирање стрингова. Фмт пакет користи глаголе за форматирање у стилу Ц за ефикасно форматирање стрингова у Го.