2013-04-12 4 views
1

У меня есть функция js, которая после завершения будет вычислять базовые уравнения алгебры. По какой-то причине он не позволит мне заменить первый символ строки в массиве. Я использовал его раньше в этой функции, но теперь это не сработает. Я пробовал использовать .replace(), а также .substring().javascript не может снять первую букву строки

Это следующие коды, которые я пробовал:

// this is what i've been testing it on 
// $problem[o][j] = +5 
var assi = $problem[0][j].charAt(0); // Get the first character, to replace to opposite sign 
switch (assi){ 
    case "+": 
    console.log($problem[0][j]); 
    $problem[0][j].replace("+","-"); 
    console.log($problem[0][j]); 
    break; 
} 

Вышеприведенные выводит на консоль:

> +5 
> +5 

Следующая код, который я попробовал:

// Second code i tried with $problem[0][j] remaining the same 
switch(assi){ 
    case "+": 
    console.log($problem[0][j]); 
    $problem[0][j].substring(1); 
    $problem[0][j] = "-" + $problem[0][j]; 
    console.log($problem[0][j]); 
    break; 
} 

Это выводит на консоль:

> +5 
> -+5 

ответ

4

Строки неизменяемы - содержимое определенной строки не может быть изменено. Вам нужно создать новую строку с заменой. Вы можете назначить эту новую строку старой переменной, чтобы сделать ее «похожей» на модификацию.

var a = "asd"; 
var b = a.replace(/^./, "b"); //replace first character with b 
console.log(b); //"bsd"; 

Переназначение:

var a = "asd"; 
a = a.replace(/^./, "b"); //replace first character with b 
console.log(a); //"bsd"; 

Если вы хотите, чтобы перевернуть знак числа, это, вероятно, проще просто умножить на -1.

+1

отметить также, что 'а = a.replace (...)' создает * новый строковый объект * и * присваивает его 'a' *. Поэтому, если вам нужно * изменить * 'a', вы можете сделать:' a = a.replace (...) ' – techfoobar

1

вам нужно заменить фактическую строку с новым

$problem[0][j] = $problem[0][j].replace("+","-"); 
1

.replace() не делает изменения в строке, он просто возвращает новая строка с теми изменениями, внесенными.

// Это не делает ничего

problem[0][j].replace("+","-"); 

// Это экономит замененный строку

problem[0][j] = problem[0][j].replace("+","-"); 
+1

Простая ошибка при кодировании на 12 часов подряд. >.> – Vince

Смежные вопросы