# Case Conversion

**URL:** https://community.mp3tag.de/t/case-conversion/15830
**Category:** Support
**Created:** [June 21, 2014, 9:45am UTC](https://community.mp3tag.de/t/case-conversion/15830 "2014-06-21T09:45:10Z")
**Posts on this page:** 17
**Page:** 1

<div class="post-metadata">

### Author: ![auldyin](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/b38774/32.png) [@auldyin](https://community.mp3tag.de/u/auldyin)
#### Post date: [June 21, 2014, 9:45am UTC](https://community.mp3tag.de/t/case-conversion/15830/1 "2014-06-21T09:45:10Z")

</div>

Hi,  
Is there any way in which files which have been changed can be displayed.

By way of an example: Roman numerals would be changed from II to Ii

I have about 26,000 files and estimate about 5% of them will have "case" problems. Doing a Case Conversion on an album by album basis would drive me nuts (OK more nuts!!) but batches of a few hundred would be manageable if the changed files could be identified.

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [June 21, 2014, 12:14pm UTC](https://community.mp3tag.de/t/case-conversion/15830/2 "2014-06-21T12:14:14Z")

</div>

You could check the "Modified" date of the files.  
Also, for case conversion you could check if $caps2() would be a good function

---

<div class="post-metadata">

### Author: ![Nature](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/n/a587f6/32.png) [@Nature](https://community.mp3tag.de/u/Nature)
#### Post date: [June 24, 2014, 5:18pm UTC](https://community.mp3tag.de/t/case-conversion/15830/3 "2014-06-24T17:18:21Z")

</div>

Hi.  
I am about to "release" my own set of actions that deal with Mixed Case in what I called "Enhanced" way, because it deals with many exceptions and particular situations, in which you forcibly want upper-case (e.g. OST, P.S.) or in which you want lower-case (e.g. of, a, the, an, in, etc.)

So I created three actions.  
1.1. Mixed Case ALL (Roman Numerals, OST, Publishers, MediaTypes)  
1.2. Lower Case ALBUM (A, THE, OF, AND, AT, IN, AN) (ENG, FR, PT)  
1.2. Lower Case TITLE (A, THE, OF, AND, AT, IN, AN) (ENG, FR, PT)

The first MixedCase simply puts everything in all fields in MixedCase.  
It also works with Romans numbers, up to 50 (L). I think no one will need more than that, and the greater the number of characters used, the greater is the risk of messing things up.  
Pay attention to URLS in comments and other fields, because it also does it in them, and might break some links that are case sensitive (anything after the domain name).  
But that is the only problem I know of and I already tested in several hundreds of files in three different languages.

The other two are to be applied optionally if you want lower-case articles (a, the, in, of, etc.).  
They only affect the mentioned fields ALBUM and TITLE. I did them separate to provide more flexibility, so that you may do one without the other.  
They work for articles in three languages already: English, French and Portuguese.  
It is still under development (but you may help too if you want), but I think most cases are already being taken care of.

Try it with a few of your tags just to see the effect and check if you like it not.  
This is only a "beta" version, so I'll will wait a few more weeks to release a final version in it's own thread. But since you are already in need, here it is. 😉  
Hope this may help.

The file I attached is in Zip format and contains the 3 actions. You just have to extract and put them in the correct mp3tag folder: [...]\Mp3tag\data\actions

[Mp3Tag\_Actions\_EnhancedMixedCase\_Conversion\_Nature\_\_2014\_06\_24\_.zip](https://community.mp3tag.de/uploads/default/original/2X/7/75ad1fb96bab8376d03443824ec6e518c6115906.zip) (1.76 KB)

---

<div class="post-metadata">

### Author: ![aax](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/edb3f5/32.png) [@aax](https://community.mp3tag.de/u/aax)
#### Post date: [June 24, 2014, 10:23pm UTC](https://community.mp3tag.de/t/case-conversion/15830/4 "2014-06-24T22:23:30Z")

</div>

Nice!  
But French and Portuguese, along with most languages other than English, don't capitalize all words in titles. So you don't really need those articles.

---

<div class="post-metadata">

### Author: ![stanman](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/s/c5a1d2/32.png) [@stanman](https://community.mp3tag.de/u/stanman)
#### Post date: [June 25, 2014, 4:33am UTC](https://community.mp3tag.de/t/case-conversion/15830/5 "2014-06-25T04:33:49Z")

</div>

You might want to add a few more to your list of words that are always lower case. This is the list I use:

a,an,and,as,at,by,for,from,in,into,of,off,on,or,the,to

---

<div class="post-metadata">

### Author: ![auldyin](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/b38774/32.png) [@auldyin](https://community.mp3tag.de/u/auldyin)
#### Post date: [June 26, 2014, 7:57am UTC](https://community.mp3tag.de/t/case-conversion/15830/6 "2014-06-26T07:57:00Z")

</div>

Actions like this are most complicated and will probably take significant time and effort to perfect.  
For example, An Album may have the name,  
Nature Boy: The Standards Album

Your action would change that to,  
Nature Boy: the Standards Album

I am not trying in any way to belittle your efforts but I think that this could become a major project.

Thank you

---

<div class="post-metadata">

### Author: ![stanman](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/s/c5a1d2/32.png) [@stanman](https://community.mp3tag.de/u/stanman)
#### Post date: [June 26, 2014, 11:10am UTC](https://community.mp3tag.de/t/case-conversion/15830/7 "2014-06-26T11:10:32Z")

</div>

> [@auldyin](#):
>
> Actions like this are most complicated and will probably take significant time and effort to perfect.

I looked at **Nature**'s actions and they're quite complicated to me, but I'm not an expert with regular expressions.

The way I do it is create an action "Replace with regular expression" which I call "Small words lower case" that looks like this:

Field: \_ALL  
Regular expression: \s(a|an|and|as|at|by|for|from|in|into|of|off|on|or|the|to)(?=\s)  
Replace with: $lower($0)

and do not check "case-sensitive comparison".

So most of the time all I do is run that one action. If I have several words that aren't capitalized, but should be, I run the action that comes with Mp3tag "Case conversion" which puts a capital letter for the first letter of all words. Then I run "Small words lower case".

Now I will still have the same problem with "Nature Boy: the Standards Album", but I only have a handful of albums that are worded that way so I just handle those manually, the same thing with Roman Numerals. No matter how you do it there's going to be the occasional exception that you have to edit manually.

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [June 26, 2014, 12:33pm UTC](https://community.mp3tag.de/t/case-conversion/15830/8 "2014-06-26T12:33:29Z")

</div>

> [@auldyin](#):
>
> ... For example, An Album may have the name,  
> Nature Boy: The Standards Album  
> Your action would change that to,  
> Nature Boy: the Standards Album

You can repair such formatting quirk using the following formatting instruction ...

From: Nature Boy **: t** he Standards Album  
To: Nature Boy **: T** he Standards Album

Action: Format value  
Field: ALBUM  
Formatstring: **$regexp(%ALBUM%,':\s+(.)',': \u$1')**

From: 01 **. n** ature Boy **: t** he Standards Album  
To: 01 **. N** ature Boy **: T** he Standards Album

Action: Format value  
Field: TITLE  
Formatstring: **$regexp(%TITLE%,'([.:])\s+(.)','$1 \u$2')**

DD.20140626.1636.CEST, DD.20140627.1813.CEST

---

<div class="post-metadata">

### Author: ![auldyin](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/b38774/32.png) [@auldyin](https://community.mp3tag.de/u/auldyin)
#### Post date: [June 26, 2014, 12:45pm UTC](https://community.mp3tag.de/t/case-conversion/15830/9 "2014-06-26T12:45:05Z")

</div>

> [@DetlevD](#):
>
> You can repair such formatting quirk using the following formatting instruction ...
> 
> From: Nature Boy **: t** he Standards Album  
> To: Nature Boy **: T** he Standards Album
> 
> Action: Format value  
> Field: ALBUM  
> Formatstring: **$regexp(%ALBUM%,':\s+(.)',': \u$1')**
> 
> DD.20140626.1636.CEST

Excellent!  
There is always a way....................just don't know enough to be able to figure it out!!  
At nearly 71 years old I'm just too old to learn!! Ha!

---

<div class="post-metadata">

### Author: ![Nature](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/n/a587f6/32.png) [@Nature](https://community.mp3tag.de/u/Nature)
#### Post date: [June 26, 2014, 4:17pm UTC](https://community.mp3tag.de/t/case-conversion/15830/10 "2014-06-26T16:17:18Z")

</div>

> [@stanman](#):
>
> You might want to add a few more to your list of words that are always lower case. This is the list I use:
> 
> a,an,and,as,at,by,for,from,in,into,of,off,on,or,the,to

Thank you for suggestion, Stanman.  
I haven't had the time to do a thorough search of words, so this is quite useful. 🙂  
IF someone wants to give words for french and portuguese or any other language I coulds integrate them too. 🙂

"OFF" is certainly not an article, it's a word in its own right, so I think I should leave that one out (at least, in the first main Action).  
But more actions can be created with whatever exceptions and particular cases we may need.

I already integrated all these words in the next version. 🙂  
I took the opportunity to improve many other things and now I'm using exactly the fields I want to change, not the "\_ALL" pseudo tag. This way I have complete control over what is changed and this way, I will not change URLS. 😉

---

<div class="post-metadata">

### Author: ![Nature](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/n/a587f6/32.png) [@Nature](https://community.mp3tag.de/u/Nature)
#### Post date: [June 26, 2014, 4:28pm UTC](https://community.mp3tag.de/t/case-conversion/15830/11 "2014-06-26T16:28:46Z")

</div>

> [@auldyin](#):
>
> Excellent!  
> There is always a way....................just don't know enough to be able to figure it out!!  
> At nearly 71 years old I'm just too old to learn!! Ha!

Dear auldyin,

The actions take many things into consideration, including the start of a field name and precedence of other characters, such as (but not limited to)  
: , ; - \ / " '  
and many other special cases; for instance, it will always UpperCase expressions as "OST", "P.S.", and the names of some publishers like "RCA", "BMG" and others.

I did not post here exactly all the things the actions do, because I'm concentrating in developing them, first.  
Only after that, as I wrote above, I will release them in its own thread.  
However, since a user seemed in great need of such a thing, I posted it. Just trying to help.

I expect to improve them further (in fact, that's what I did yesterday). But for now, as they were posted here, they already do a lots of things. But I'm always looking up for new situations to improve. 😉

Thank you for you support and understanding.

---

<div class="post-metadata">

### Author: ![Nature](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/n/a587f6/32.png) [@Nature](https://community.mp3tag.de/u/Nature)
#### Post date: [June 27, 2014, 3:43pm UTC](https://community.mp3tag.de/t/case-conversion/15830/12 "2014-06-27T15:43:46Z")

</div>

> [@DetlevD](#):
>
> Action: Format value  
> Field: ALBUM  
> Formatstring: **$regexp(%ALBUM%,':\s+(.)',': \u$1')**  
> [...]

Again, many thanks to you DetlevD.  
I did check this yesterday and it served as an example to me, although I'm using a different strategy (direct RegEx replacement) and I'm using the the pipes to join several words (as you said on another thread) and so the expressions I'm using are different. But they already do this special case and many others. 🙂  
I expect to release them soon with a full change log of what they do. 😉

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [June 28, 2014, 1:39am UTC](https://community.mp3tag.de/t/case-conversion/15830/13 "2014-06-28T01:39:25Z")

</div>

In your post #12 the citation is not correct, because you have mangled together two different example cases from my post #8.

DD.20140628.0539.CEST

---

<div class="post-metadata">

### Author: ![Nature](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/n/a587f6/32.png) [@Nature](https://community.mp3tag.de/u/Nature)
#### Post date: [June 29, 2014, 7:27am UTC](https://community.mp3tag.de/t/case-conversion/15830/14 "2014-06-29T07:27:41Z")

</div>

I'm sorry DetlevD.  
I just fixed it.

---

<div class="post-metadata">

### Author: ![Nature](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/n/a587f6/32.png) [@Nature](https://community.mp3tag.de/u/Nature)
#### Post date: [June 29, 2014, 5:22pm UTC](https://community.mp3tag.de/t/case-conversion/15830/15 "2014-06-29T17:22:31Z")

</div>

It's just to inform the users of this thread that I already released the Actions. 🙂

I think auldyin will be pleased to know that the actions handle Roman Numerals, the "The" in the way he expected and even many more (ways and words). 🙂

You can download them in this thread:  
[/t/15863/1](https://community.mp3tag.de/t/15863/1)

---

<div class="post-metadata">

### Author: ![auldyin](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/a/b38774/32.png) [@auldyin](https://community.mp3tag.de/u/auldyin)
#### Post date: [July 1, 2014, 8:01am UTC](https://community.mp3tag.de/t/case-conversion/15830/16 "2014-07-01T08:01:40Z")

</div>

Cheers Nature.

About to try out your Actions

---

<div class="post-metadata">

### Author: ![system](https://community.mp3tag.de/uploads/default/original/2X/c/ce7035d426cb755a7916793326d23b465222a407.png) [@system](https://community.mp3tag.de/u/system)
#### Post date: [February 9, 2026, 12:25pm UTC](https://community.mp3tag.de/t/case-conversion/15830/17 "2026-02-09T12:25:06Z")

</div>


