将字符串格式化为标题大小写
如何将字符串格式化为标题大小写?
How do I format a string to title case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何将字符串格式化为标题大小写?
How do I format a string to title case?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(20)
下面是一个在 C# 中执行此操作的简单静态方法:
Here is a simple static method to do this in C#:
我会谨慎对待自动将所有空格前面的单词转大写,因为这样我可能会冒着招来吹毛求疵者的愤怒的风险。
我至少会考虑为冠词和连词等例外情况实现一个字典。 看哪:
当涉及到专有名词时,事情就变得更加丑陋。
I would be wary of automatically upcasing all whitespace-preceded-words in scenarios where I would run the risk of attracting the fury of nitpickers.
I would at least consider implementing a dictionary for exception cases like articles and conjunctions. Behold:
And when it comes to proper nouns, the thing gets much uglier.
这是一个 Perl 解决方案 http://daringfireball.net/2008/05/title_case
这是一个 Ruby 解决方案http://frankschmitt.org/projects/title-case
这是一个 Ruby 单行解决方案: http://snippets.dzone.com/posts/show/4702
那是什么- liner 正在做的是使用正则表达式将每个单词的第一个字符替换为其大写版本。
Here's a Perl solution http://daringfireball.net/2008/05/title_case
Here's a Ruby solution http://frankschmitt.org/projects/title-case
Here's a Ruby one-liner solution: http://snippets.dzone.com/posts/show/4702
What the one-liner is doing is using a regular expression substitution of the first character of each word with the uppercase version of it.
在 Silverlight 中,
TextInfo
类中没有ToTitleCase
。这是一种基于正则表达式的简单方法。
注意:Silverlight 没有预编译的正则表达式,但对我来说,这种性能损失不是问题。
In Silverlight there is no
ToTitleCase
in theTextInfo
class.Here's a simple regex based way.
Note: Silverlight doesn't have precompiled regexes, but for me this performance loss is not an issue.
如果您计划接受 az 和 AZ 之外的字符,那么这是一个糟糕的解决方案。
例如:ASCII 134:å,ASCII 143:Å。
使用算术可以得到: ASCII 102: f
使用库调用,不要假设您可以对字符使用整数算术来返回有用的东西。 Unicode 是棘手。
This is a poor solution if you ever plan to accept characters beyond a-z and A-Z.
For instance: ASCII 134: å, ASCII 143: Å.
Using arithmetic gets you: ASCII 102: f
Use library calls, don't assume you can use integer arithmetic on your characters to get back something useful. Unicode is tricky.
In Perl:
这甚至在常见问题解答中也是如此。
In Perl:
That's even in the FAQ.
如果您使用的语言具有受支持的方法/函数,则只需使用该方法/函数(如 C#
ToTitleCase
方法中所示),没有,则您需要执行如下操作:
1 到将其大写,例如 C - 使用 ascii 代码 查找 char 的整数值并从中减去 32它。
代码中需要进行更多的错误检查(确保字母有效等),并且“大写”功能需要对字母施加某种“标题大小写方案”以检查不需要的单词具有能力(“和”、“但是”等。这里是好方案)
If the language you are using has a supported method/function then just use that (as in the C#
ToTitleCase
method)If it does not, then you will want to do something like the following:
1 To capitalize it in, say, C - use the ascii codes to find the integer value of the char and subtract 32 from it.
There would need to be much more error checking in the code (ensuring valid letters etc.), and the "Capitalize" function will need to impose some sort of "title-case scheme" on the letters to check for words that do not need to be capatilised ('and', 'but' etc. Here is a good scheme)
类似 Excel 的正确:
Excel-like PROPER:
用什么语言?
在 PHP 中,它是:
ucwords()
示例:
In what language?
In PHP it is:
ucwords()
example:
在Java中,您可以使用以下代码。
In Java, you can use the following code.
我认为使用 CultureInfo 并不总是可靠的,这是手动操作字符串的简单而方便的方法:
I think using the CultureInfo is not always reliable, this the simple and handy way to manipulate string manually:
以下是如何执行此操作的简单示例:
Here is a simple example of how to do it :
下面是 Python 中的一个实现: https://launchpad.net/titlecase.py
以及此实现的一个端口我刚刚用 C++ 完成: http://codepad.org/RrfcsZzO
Here's an implementation in Python: https://launchpad.net/titlecase.py
And a port of this implementation that I've just done in C++: http://codepad.org/RrfcsZzO
Excel中有一个内置公式
PROPER(n)
。很高兴看到我不必自己写!
There is a built-in formula
PROPER(n)
in Excel.Was quite pleased to see I didn't have to write it myself!
http://titlecase.com/
有一个 APIhttp://titlecase.com/
has an API在 C# 中
In C#
在 C# 中,您可以简单地将
In C# you can simply use
不使用现成的函数,一个超级简单的低级算法将字符串转换为标题大小写:
这假设“将字符转换为大写”将正确执行此操作,无论字符是否区分大小写(例如“+”)。
Without using a ready-made function, a super-simple low-level algorithm to convert a string to title case:
This asssumes the "convert character to uppercase" will do that correctly regardless of whether or not the character is case-sensitive (e.g., '+').
这里有一个 C++ 版本。 它有一组不可大写的单词,例如代词和介词。 但是,如果您要处理重要的文本,我不建议自动化此过程。
Here you have a C++ version. It's got a set of non uppercaseable words like prononuns and prepositions. However, I would not recommend automating this process if you are to deal with important texts.
使用 Perl 你可以这样做:
With perl you could do this: