Как избавиться от символов неASCII в рубине

От строки:

YourEnum foo = (YourEnum) Enum.Parse(typeof(YourEnum), yourString);
// the foo.ToString().Contains(",") check is necessary for enumerations marked with an [Flags] attribute
if (!Enum.IsDefined(typeof(YourEnum), foo) && !foo.ToString().Contains(","))
  throw new InvalidOperationException($"{yourString} is not an underlying value of the YourEnum enumeration.")

От интервала:

YourEnum foo = (YourEnum)yourInt;

Обновление:

От числа Вы можете также

YourEnum foo = (YourEnum)Enum.ToObject(typeof(YourEnum) , yourInt);
61
задан Pesto 12 August 2009 в 19:47
поделиться

4 ответа


class String
 def remove_non_ascii(replacement="") 
   self.gsub(/[\u0080-\u00ff]/, replacement)
 end
end
39
ответ дан 24 November 2019 в 16:59
поделиться

Вот мое предложение с использованием Iconv.

class String
  def remove_non_ascii
    require 'iconv'
    Iconv.conv('ASCII//IGNORE', 'UTF8', self)
  end
end
20
ответ дан 24 November 2019 в 16:59
поделиться

Quick GS показал это обсуждение , которое предлагает следующий метод:

class String
  def remove_nonascii(replacement)
    n=self.split("")
    self.slice!(0..self.size)
    n.each { |b|
     if b[0].to_i< 33 || b[0].to_i>127 then
       self.concat(replacement)
     else
       self.concat(b)
     end
    }
    self.to_s
  end
end
0
ответ дан 24 November 2019 в 16:59
поделиться

Нет, не обойтись без удаления всех символов, кроме основных (что рекомендуется над). Лучшим решением будет правильная обработка этих имен (поскольку большинство файловых систем сегодня не имеют проблем с именами Unicode). Если ваши пользователи вставляют лигатуры, они, черт возьми, тоже захотят вернуть их. Если ваша проблема связана с файловой системой, абстрагируйтесь от нее и установите для имени файла значение md5 (это также позволяет легко сегментировать загрузки в сегменты, которые сканируются очень быстро, поскольку в них никогда не бывает слишком много записей).

Лучшим решением будет правильная обработка этих имен (поскольку большинство файловых систем сегодня не имеют проблем с именами Unicode). Если ваши пользователи вставляют лигатуры, они, черт возьми, тоже захотят вернуть их. Если ваша проблема связана с файловой системой, абстрагируйтесь от нее и установите для имени файла значение md5 (это также позволяет легко сегментировать загрузки в сегменты, которые сканируются очень быстро, поскольку в них никогда не бывает слишком много записей).

Лучшим решением будет правильная обработка этих имен (поскольку большинство файловых систем сегодня не имеют проблем с именами Unicode). Если ваши пользователи вставляют лигатуры, они, черт возьми, тоже захотят вернуть их. Если ваша проблема связана с файловой системой, абстрагируйтесь от нее и установите для имени файла значение md5 (это также позволяет легко сегментировать загрузки в сегменты, которые сканируются очень быстро, поскольку в них никогда не бывает слишком много записей).
0
ответ дан 24 November 2019 в 16:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: