Преобразование прописной строки в случай заголовка с помощью Ruby

мне, выгода (Исключение) пункт должен был получить любое исключение вообще. Есть ли какая-либо причина, почему она не была бы?

единственная возможность, о которой я могу думать, состоит в том, что что-то еще ловит его перед Вами и обрабатывает его способом, который, кажется, неперехваченное исключение (например, выход из процесса).

мой блок попытки/выгоды не поймает его и вместо этого останавливает выполнение как необработанное исключение.

необходимо найти то, что вызывает процесс выхода. Это могло бы быть что-то другое, чем необработанное исключение. Вы могли бы попытаться использовать собственный отладчик с набором точки останова на "{, kernel32.dll} ExitProcess". Тогда используйте SOS для определения то, что управляемый код называет процессом выхода.

48
задан Andrew Grimm 1 December 2011 в 14:45
поделиться

5 ответов

While trying to come up with my own method (included below for reference), I realized that there's some pretty nasty corner cases. Better just use the method already provided in Facets, the mostest awesomest Ruby library evar:

require 'facets/string/titlecase'

class String
  def titleize
    split(/(\W)/).map(&:capitalize).join
  end
end

require 'test/unit'
class TestStringTitlecaseAndTitleize < Test::Unit::TestCase
  def setup
    @str = "i just saw \"twilight: new moon\", and man!   it's crap."
    @res = "I Just Saw \"Twilight: New Moon\", And Man!   It's Crap."
  end
  def test_that_facets_string_titlecase_works
    assert_equal @res, @str.titlecase
  end
  def test_that_my_own_broken_string_titleize_works
    assert_equal @res, @str.titleize # FAIL
  end
end

If you want something that more closely complies to typical writing style guidelines (i.e. does not capitalize words like "and"), there are a couple of "titleize" gems on GitHub.

37
ответ дан 7 November 2019 в 12:02
поделиться

Если вы используете Rails (на самом деле все, что вам нужно, это ActiveSupport, который является частью Rails), вы можете использовать titleize :

"MY STRING HERE".titleize
# => "My String Here"
85
ответ дан 7 November 2019 в 12:02
поделиться
string = "MY STRING HERE"
string.split(" ").map {|word| word.capitalize}.join(" ")

Как это работает: .split ("") разбивает его на пробелы, так что теперь у нас есть массив, который выглядит как ["my", "string", "here"] . Вызов map выполняет итерацию по каждому элементу массива, присваивая его временной переменной word , которую мы затем вызываем capitalize . Теперь у нас есть массив, который выглядит как ["My", "String", "Here"] , и, наконец, мы превращаем этот массив обратно в строку, join , добавляя каждый элемент с пробел ("").

5
ответ дан 7 November 2019 в 12:02
поделиться
"HELLO WORLD HOW ARE YOU".gsub(/\w+/) do |word|
  word.capitalize
end
#=> "Hello World How Are You"
53
ответ дан 7 November 2019 в 12:02
поделиться

Из ActiveSupport

"MY STRING HERE".gsub(/\b('?[a-z])/) { $1.capitalize }

Если вы используете Rails / ActiveSupport, этот метод уже доступен бесплатно.

8
ответ дан 7 November 2019 в 12:02
поделиться
Другие вопросы по тегам:

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