0

This My First Question Hear In Stack Overflow, And I Wish To Get The Help I Expect..

I Was Looking For A Way To Change All The Firefox Bookmarks Titles To 'TitleCase' .

I've already found a perfect technique to change it to UPPERCase using a fierfox Dev. tool called "scratchpad" in the browser environment .

here's the steps for it:-

  1. open about:config
  2. set devtools.chrome.enabled to true
  3. tools > web developer > scratchpad
  4. environment > browser
  5. edit > paste (i.e. copy and paste code below)
  6. execute > run

Code.

    function getChildIds(aRootNode, aChildIds) {
  for (var i = 0; i < aRootNode.childCount; i++) {
    var node = aRootNode.getChild(i);
    aChildIds.push(node.itemId);
    if (node.type == node.RESULT_TYPE_FOLDER) {
      node.QueryInterface(Ci.nsINavHistoryContainerResultNode);
      var oldContainerOpen = node.containerOpen;
      node.containerOpen = true;
      getChildIds(node, aChildIds);
      node.containerOpen = oldContainerOpen;
    }
  }
}
var bs = Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
  getService(Ci.nsINavBookmarksService);
var hs = Cc["@mozilla.org/browser/nav-history-service;1"].
  getService(Ci.nsINavHistoryService);
var query = hs.getNewQuery();
var options = hs.getNewQueryOptions();
options.queryType = options.QUERY_TYPE_BOOKMARKS;
var folders = new Array();
folders.push(bs.bookmarksMenuFolder);    // Bookmarks Menu
folders.push(bs.toolbarFolder);          // Bookmarks Toolbar
folders.push(bs.unfiledBookmarksFolder); // Unsorted Bookmarks
var childIds = new Array();
for (var i = 0; i < folders.length; i++) {
  query.setFolders(folders.slice(i, i + 1), 1);
  var result = hs.executeQuery(query, options);
  var rootNode = result.root;
  rootNode.containerOpen = true;
  getChildIds(rootNode, childIds); // recursive function
  rootNode.containerOpen = false;
}
bs.runInBatchMode({
  runBatched: function () {
    for (var i = 0; i < childIds.length; i++) {
      var type = bs.getItemType(childIds[i]);
      if (type == bs.TYPE_BOOKMARK || type == bs.TYPE_FOLDER) {
        var title = bs.getItemTitle(childIds[i]);
        if (title) {
          bs.setItemTitle(childIds[i], title.toUpperCase());
        }
      }
    }
  }
}, null);

So, My Question Is, How To Modify That Code In Order To Change The Bookkmarks' Titles To TitleCase (Capitalize Each Word) ?

Thanks In Advance...

4

1 回答 1

0

请参阅此网站: http: //msdn.microsoft.com/en-us/library/system.globalization.textinfo.totitlecase (v=vs.110).aspx

您可以使用ToTitleCaseTextInfo 类中的方法将字符串更改为标题大小写。(确保 title 变量是一个字符串。)然后,而不是使用title.toUpperCaseuse title.ToTitleCase

我希望这有帮助,

圣地亚哥

于 2014-06-06T00:54:06.147 回答