Ich habe eine Liste aller Shakespeare Sonette und ich mache eine Funktion für jedes Sonett zu suchen. . Aber ich mag, dass sie arabische Zahlen verwendet suchen kann (zum Beispiel „/ Sonett 122“ Die .txt wird auf diese Weise formatiert:Wie ersetzt man alle römischen Zahlen in einer Zeichenkette für das arabische Äquivalent?
I
This is a sonnet
II
This is a second sonnet
I-Knoten im Augenblick verwenden, um zu versuchen, es zu tun, aber ich habe ohne Erfolg seit gestern versucht, meine letzten versuchen gestern wurden mit der ‚ersetzen‘ Methode als solche.
'use strict';
//require module roman-numerals, which converts roman to arabic
var toArabic = require('roman-numerals').toArabic;
//require file-handling module
var fs = require('fs');
fs.readFile('sonn.txt', 'utf8', function (err,data) {
if (err) {
console.log(err);
} else {
var RN = /[A-Z]{2,}/g;
var found = data.match(RN); //finds all roman numbers and puts them in an array
var numArr = [];
for (var i = 0; i < found.length; i++){
numArr.push(toArabic(found[i])); //puts all arabic numbers in numArr
}
for (var e = 0; e < found.length; e++){
data.replace(found, found.forEach((x, i)=> {
toArabic(x)
}
});
Dann habe ich versucht, sie mit dem ersetzen:
data.replace(found, function(s, i){
return numArr[i];
});
Dann habe ich versucht, mit eine for-Schleife, die ich nicht behalten habe dass Code, aber es war so etwas wie:
for(var i=0;i<found.length;i++){
data.replace(found, numArr[i]);
}
Der letzte Code jede Nummer ersetzt und löscht dann die Daten und ersetzt die nächste Nummer als solche:
replace(abc, 123) -> 1bc, a2c, ab3
Wie mache ich es jedes Auftreten iterieren in den Daten und behalte es? Dann sollte es einfach in einem neuen txt gespeichert werden.
(Auch mein RegExp findet nur mehrere Zeichen römische Zahlen ersetzt einsames Ich zu vermeiden, die am Ende einer Zeile nicht gefunden werden.)
Also Sie versuchen, römische Ziffern regelmäßig Ziffern zu konvertieren? Wie wäre es mit -> http://blog.stevenlevithan.com/archives/javascript-roman-numeral-converter – adeneo
Hier ist eine Reihe von Beispielen in Java -> http://stackoverflow.com/questions/9073150/converting-roman-numerals -to-decimal – adeneo
@adeneo das Modul "römische Ziffern" konvertiert sie, aber es nimmt nur Strings als Wert, also muss ich es innerhalb der Replace-Funktion oder innerhalb der Schleife verwenden, so dass jede Iteration gibt es eine Zeichenfolge. Mein Problem ist nicht das Konvertieren, sondern das Ersetzen aller Vorkommnisse in der ursprünglichen Zeichenfolge, die die TXT-Datei ist. – Besto