@dlangru

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

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
=\

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 и он там как-то ловко делает все как надо

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

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

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

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
PR уже @deviator принял
D - dоверие) я не читал, потому что только встал и не подходил к компу)

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
string в dchar-ы!?
В большинстве алгоритмов строки отдельно отрабатываются из-за этого

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
эх

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
а вообще полноценный юникод еще та засада
Если не жалеть 4 байта на символ то все ок же?

Dmitry
21.12.2017
08:20:33
Evgeny
21.12.2017
08:20:57
Если не жалеть 4 байта на символ то все ок же?
на самом деле не всегда. есть же еще всякие надстрочные закорючки вроде ударений

они отдельным поинтом идут

qwerty
21.12.2017
08:21:23
Если не жалеть 4 байта на символ то все ок же?
Дело не в памяти. В мире Python об этом особо не заботишься, а вот написать поменьше, чтоб работало побольше. Да чтоб еще и все явно...)

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

toUpper точно работает для string

Oleg
21.12.2017
08:22:52
"qwe".toUpper не сработал у меня
import std.stdio; import std.string; void main(string[] args) { "привет".toUpper.writeln; }

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 ?

Страница 347 из 719