# Action: Case Conversion • Unexpected Results

**URL:** <https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853>\
**Category:** Support\
**Created:** [June 1, 2018, 10:53am UTC](https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853 "2018-06-01T10:53:02Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ragtag](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ragtag/32/13146_2.png) [@ragtag](https://community.mp3tag.de/u/ragtag)\
**Post date:** [June 1, 2018, 10:53am UTC](https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853/1 "2018-06-01T10:53:02Z")

</div>

Mp3tag v2.88a

I created a Case Conversion Action, with which to capitalize the first letter of a word following a hyphen.

Example:

Bird-in-hand

which should change to

Bird-In-Hand

once the action is applied.

**Action configuration:**

Field: \_ALL  
Case conversion: Mixed Case  
Words begin from..: - (hyphen)

When applied, this action leads, thus far, to the following unexpected, undesirable results:

Example, in the Artist Field, containing zero hyphens:

1. MacNeal will transform to Macneal.

2. The first letter of a word that follows one of the following punctuations, transforms from upper-case to lower-case: (, [, {.

Could someone please explain to me why this is happening, and propose a solution?

Thank you.

---

<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 1, 2018, 1:37pm UTC](https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853/2 "2018-06-01T13:37:33Z")

</div>

Once you start to change the case, you have to state ALL the characters that serve as word boundaries - otherwise they are treated like any other character  
The case conversion "Mixed Case" means that every first letter in a word gets capitalized.  
and in the string

> [@ragtag](#):
>
> (Maggie Moniker)

the "(" is the first letter and "m" is the second one, which becomes lower case.  
A "blank" always serves as word boundary.

So for the case of "MacNeal", it may be better to use an action of the type "Format value" for the e.g. TITLE and then the  
format string: $caps2(%title%,'-(&%!.:;')  
This leaves all capital letters as they are and only changes those that follow one that is specified as word boundary

---

<div class="post-metadata">

**Author:** ![ragtag](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ragtag/32/13146_2.png) [@ragtag](https://community.mp3tag.de/u/ragtag)\
**Post date:** [June 1, 2018, 2:03pm UTC](https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853/3 "2018-06-01T14:03:05Z")

</div>

Thank you for your explanation Ohrenkino. I think I understand the get the gist of it now. I had thought that when boundary is specified for this particular action, it will apply to the words containing the boundary only, i.e. the hyphen in this case. I expected anything else to be left alone.

Initially, I posted this topic:

[Expression Needed to Change Hyphenated Word Capitalisation](https://community.mp3tag.de/t/expression-needed-to-change-hyphenated-word-capitalisation/41689).

Is it not preferable then, to use a regular expression to take care of hyphenated words- one which will not touch anything else but hyphenated words- rather than setting up and applying an elaborate Case Conversion action to take care of all possible scenarios? Would you please help with that?

---

<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 1, 2018, 2:25pm UTC](https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853/4 "2018-06-01T14:25:57Z")

</div>

> [@ragtag](#):
>
> Is it not preferable then, to use a regular expression to take care of hyphenated words

Regexes are usually a little confusing  
But here we go:  
`$regexp(%title%,'-(.)',-'\u$1')`  
You have to enter the boundary character twice: in the search part and the replace part.  
Use it in Convert\>tag-Tag or in an action of the type "Format value".

---

<div class="post-metadata">

**Author:** ![ragtag](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ragtag/32/13146_2.png) [@ragtag](https://community.mp3tag.de/u/ragtag)\
**Post date:** [June 1, 2018, 2:55pm UTC](https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853/5 "2018-06-01T14:55:32Z")

</div>

Indeed. Thank you Ohrenkino.

---

<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:27pm UTC](https://community.mp3tag.de/t/action-case-conversion-unexpected-results/41853/6 "2026-02-09T12:27:27Z")

</div>


