
qwerty
21.12.2017
07:58:42
я что-то не пойму, если я не уверен, что в файле все символы могут быть закодированы в UTF-8 мне лучше всегда брать dstring?

Evgeny
21.12.2017
07:59:34
либо все либо другая кодировка

qwerty
21.12.2017
08:00:04
ну вот у меня лежит файл в кодировке utf-8

Google

qwerty
21.12.2017
08:00:09
в нем слово résumé

Evgeny
21.12.2017
08:00:22
и что?

qwerty
21.12.2017
08:00:40
второй и шестой символ в utf-8 не влезут

Evgeny
21.12.2017
08:00:46
влезут

qwerty
21.12.2017
08:00:49
=\

Oleg
21.12.2017
08:00:50

qwerty
21.12.2017
08:00:52
проверьте

Oleg
21.12.2017
08:01:07
Проверяли)

Evgeny
21.12.2017
08:01:07
зачем проверять, я знаю это точно
просто они займут не один, а несколько charов

qwerty
21.12.2017
08:02:00
и это значит "влезает"
хорошо, значит я не так выразился, прошу прощения.

Evgeny
21.12.2017
08:02:25
да, оно загрузится в string без проблем

Google

Oleg
21.12.2017
08:02:32

qwerty
21.12.2017
08:02:48
нет, мне надо слайс взять скажем
и я хочу быть уверен, что взяв слайс из 3 символов, я получу свои 3 символа
а не 2

Oleg
21.12.2017
08:03:21
str.to!dstring[a..b]

Evgeny
21.12.2017
08:03:28
со слайсом могут быть проблемы, может порезать символ

qwerty
21.12.2017
08:03:38
не может, а точно порежет

Evgeny
21.12.2017
08:03:49
грузишь в string и конвертишь в dstring

qwerty
21.12.2017
08:03:53
вот!

Oleg
21.12.2017
08:03:59

qwerty
21.12.2017
08:04:00
я как раз об этом и говорил

Oleg
21.12.2017
08:04:28
А может и не порезать, если не в символ попадешь
Но это уже философия

qwerty
21.12.2017
08:04:51
вот вот

Oleg
21.12.2017
08:05:01
Типа раз такое может быть, то обязательно будет

Evgeny
21.12.2017
08:05:05
озвучь точно свою задачу, может там можно и без dstring обойтись

qwerty
21.12.2017
08:05:08
но мне надо как-то провести аналогию с python
там просто берешь, суешь в str и он там как-то ловко делает все как надо

Oleg
21.12.2017
08:05:58

Evgeny
21.12.2017
08:06:00
в дешке тоже многое автоматизировано

Google

Evgeny
21.12.2017
08:06:10
смотря что тебе надо

qwerty
21.12.2017
08:06:11
и символы unicode point-ы считает правильно и слайсы по ним делает как надо

Oleg
21.12.2017
08:06:25

Evgeny
21.12.2017
08:06:30
дешка тоже так умеет

qwerty
21.12.2017
08:06:36
как unicode поинты посчитать я нашел
PR уже @deviator принял
но вот со слайсами я не знаю как аналогию провести

Oleg
21.12.2017
08:07:12
В std очень много методов, которые работают правильно с такими строками
Типа порезать путь на отдельные папки
Отделить расширение от имени

qwerty
21.12.2017
08:07:40
мне надо просто слайс правильно взять

Oleg
21.12.2017
08:07:49
Тогда dstring

Oleg
21.12.2017
08:08:05
Он всегда будет правильно резаться

Evgeny
21.12.2017
08:08:24
чтобы взять слайс нужно точки разреза знать

Oleg
21.12.2017
08:09:35

Evgeny
21.12.2017
08:09:49
все алгоритмы из std. algorithm и std.range автоматически декодируют string в последовательность dcharов

qwerty
21.12.2017
08:10:03
да?!

Evgeny
21.12.2017
08:10:11
да

qwerty
21.12.2017
08:10:17
string в dchar-ы!?

Dmitry
21.12.2017
08:10:19
даже foreach

Google

qwerty
21.12.2017
08:10:25
O_o

Evgeny
21.12.2017
08:10:38
да, спорное решение, но в ди сделано так

Oleg
21.12.2017
08:10:46

Evgeny
21.12.2017
08:10:57
foreach, емнип нет

qwerty
21.12.2017
08:11:11
что значит "емнип" ?

Evgeny
21.12.2017
08:11:32
если мне не изменяет память - емнип

Oleg
21.12.2017
08:11:51
В foreach нужно явно указать

Evgeny
21.12.2017
08:12:00
только библиотечные функции декодируют строки автоматом

Oleg
21.12.2017
08:12:06
Просто так он будет по char скакать

qwerty
21.12.2017
08:13:54
я так и не понял главного. Можно ли из string взять слайс посимвольно без риска порезать символ

Admin
ERROR: S client not available

Dmitry
21.12.2017
08:14:06
да, foreach(dchar c; "привет")

qwerty
21.12.2017
08:14:18
эх

Oleg
21.12.2017
08:15:00

Dmitry
21.12.2017
08:15:05
из стринга слайс если брать по индексам, то сам отвечаешь за то, чтобы не порезать
но редко бывает, что нужны именно символы с 45 по 76
обычно их находишь поиском
тогда и не окажешься по середине символа

qwerty
21.12.2017
08:17:01
дак оно понятно, просто не знаю как локаничней пример показать. Если покажу просто слайс от string, то читающий может выстрелить в ногу и у него сложится впечатление, что его обманули

Evgeny
21.12.2017
08:18:12
ну ты же слайс не от балды берешь?

Google

Evgeny
21.12.2017
08:18:45
для текстового редактора проще с dstring работать внутри

Oleg
21.12.2017
08:19:10
Кстати toUpper можно без map использовать

Evgeny
21.12.2017
08:19:22
а вообще полноценный юникод еще та засада

qwerty
21.12.2017
08:19:35
"qwe".toUpper не сработал у меня

Oleg
21.12.2017
08:20:05

Dmitry
21.12.2017
08:20:33

Evgeny
21.12.2017
08:20:57
они отдельным поинтом идут

qwerty
21.12.2017
08:21:23

Evgeny
21.12.2017
08:22:07
конвертни в dstring и у тебя всегда один символ будет в одной ячейке массива
toUpper точно работает для string

Oleg
21.12.2017
08:22:52

qwerty
21.12.2017
08:23:42
в std.string?

Oleg
21.12.2017
08:23:47
кстати, пару раз видел ресурс, где можно компилировать онлайн, при этом если ссылку передать, то код тоже сохранён будет

qwerty
21.12.2017
08:23:55
run.dlang.io

Oleg
21.12.2017
08:24:11

qwerty
21.12.2017
08:24:35
действительно работает
странно, но в документации не вижу этого toUpper

Oleg
21.12.2017
08:24:53
на run.dlang.io нет кнопки, чтобы с кодом передать, можно через gist это реализовать

Dmitry
21.12.2017
08:25:15
https://dpaste.dzfl.pl ?