- Home /
Why does the added char always stay at the end of my string ? (Operator "+=")
Hey,
I am trying to create an input field to choose your birthdate. I want the birthdate in this form: dd.mm.yyyy (for example 01.01.1990) So I want to automatically add a point "." if the user has typed in two other chars. (for better expanation I removed some code where I check for the correct input)
public InputField BirthdateInputField;
void Start () {
BirthdateInputField.onValueChanged.AddListener(delegate { ChangedBirthdate(); });
}
public void ChangedBirthdate()
{
Debug.Log("Here: " + BirthdateInputField.text);
int stringLength = BirthdateInputField.text.Length;
if (stringLength == 2)
{
BirthdateInputField.text += ".";
}
Debug.Log(BirthdateInputField.text);
}
Output:
Here: 1
1
Here: 12
Here: 12.
12.
12.
Here is the point I can no longer understand what unity is doing:
Here: 123. // I would expect here: 12.3
123. // I would expect here: 12.3
Here: 1234. // I would expect here: 12.34
1234. // I would expect here: 12.34
Why does the point always stay at the end of the string?
Answer by Bunny83 · Jan 30, 2018 at 12:26 AM
The problem is that you just add your character to the string. However the cursor of the input field isn't affected by this. That means the cursor is still after the second character and new inputted characters are inserted at the current cursor position.
You probably want to increase caretPosition by 1 as well
Answer by kennenwe · Jan 29, 2018 at 06:53 PM
BirthdateInputField.text += "."; if you want the point to be afther the BirthdateInputField dont use +=... use only + "."
I want this behavior: 12.34
The point/char should stay at the third position of my string. But in my case it is always at the end of the string.
This answer doesn't make much sense. Are you sure you actually read the line of code carefully? C# doesn't have a separate += operator. It's just a shorthand for
BirthdateInputField.text = BirthdateInputField.text + ".";
Your answer
Follow this Question
Related Questions
Detecting if an input was something other then a specified character (C#) 2 Answers
Resources.Load returns null,Resources.Load don't load sprite 1 Answer
How to access a public string attached on a UI Button 1 Answer
Best way to emulate Swift String Interpolation in UnityScript? 1 Answer
C# Error help ( error CS0023 The `!’ operator cannot be applied to operand of type `string’ ) ??? 1 Answer