【问题标题】:Jquery — Regex a URL slug into a capitalized sentence?Jquery — 将 URL slug 正则表达式转换为大写句子?
【发布时间】:2011-07-21 11:57:06
【问题描述】:

你好 我正在尝试弄清楚如何转换

这就是我的蛞蝓

到:

这是我的蛞蝓

在 Jquery 中?!

我知道 PHP 在这方面很棒,但 jQuery 可能不是?

【问题讨论】:

  • 您需要将最终文本实际大写还是仅在网页上显示为大写?

标签: jquery regex string


【解决方案1】:

这应该会为您完成:(这是一个简单的先前示例)

var str = "this-is-my-slug";
str = str.toLowerCase().replace(/-/,' ').replace(/\b[a-z]/g, convert);
    function convert() {
          return arguments[0].toUpperCase();
    }

这里是函数形式——整个单词和单个单词的转换:

   //Converts and Formats entire string
   function Convert(test)
   {
       var formatted = test.toLowerCase().replace(/-/g,' ');
       var array = test.split(" ");
       var output = "";

       for (i=0;i<array.length;i++)
       {
              output += ConvertString(array[i]);
       }  
       return output;
    }

   //Formats individual words
   function ConvertString(string)
   {
       var str = string;
       str = str.toLowerCase().replace(/-/g,' ').replace(/\b[a-z]/g, convert);
       function convert() {
          return arguments[0].toUpperCase();
       }
       return str; 
   }

Working Example - Updated

【讨论】:

  • 没问题 - 希望它有所帮助:)
  • 嗯,只是注意到一个问题,它只替换了第一个 -,第二个第三个 nth 留在那里。猜猜我需要在其中添加一个 each() 吗?
  • 糟糕,我忘记了拆分 - 一秒 :)
  • 实际上,嗯,我再次尝试这个(在 jsfiddle 中)它不起作用?我试图找出原因,但这有点超出我的能力,但我会继续尝试。只是为了仔细检查... my-dashed-string 应该输出为 My Dashed String,目前它正在输出 My Dashed-String
  • 现在应该都可以了,我注意到一个问题,我忘记了正则表达式中的“g”(表示全局替换而不仅仅是第一个实例)。现在试一试:)
【解决方案2】:

将 jQuery 与 PHP 进行比较并不是一个特别公平的比较,但我不会深入讨论,而是直接将您引向 this 问题。它正在执行相反的操作,但您可能会从中获得一些帮助来解决您的问题。

【讨论】:

  • 你说得对,这不是一个公平的比较。我喜欢 jQuery :-)
【解决方案3】:

好的,这 100% 有效:

http://jsfiddle.net/Y9WQC/1/

var string = "this-is-a-slug";

convert = string.replace(/-/g," ");

function ucwords (str) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Waldo Malqui Silva
    // +   bugfixed by: Onno Marsman
    // +   improved by: Robin
    // +      input by: James (http://www.james-bell.co.uk/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: ucwords('kevin van  zonneveld');
    // *     returns 1: 'Kevin Van  Zonneveld'
    // *     example 2: ucwords('HELLO WORLD');
    // *     returns 2: 'HELLO WORLD'
    return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
        return $1.toUpperCase();
    });
}
var result = ucwords(convert)
$("div").text(result); 

<div>my new string will output here</div>

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多