MUtilities development repository
修订版 | 4f114738e2b79b1c8cccdf7343ddcd1e67b96610 (tree) |
---|---|
时间 | 2015-07-11 05:15:45 |
作者 | LoRd_MuldeR <mulder2@gmx....> |
Commiter | LoRd_MuldeR |
Some improvements to clean_file_name() and clean_file_path() functions.
@@ -442,30 +442,39 @@ CLEAN_FILE_NAME[] = | ||
442 | 442 | |
443 | 443 | QString MUtils::clean_file_name(const QString &name) |
444 | 444 | { |
445 | - QString str = name.simplified(); | |
445 | + QRegExp regExp("\"(.+)\""); | |
446 | + regExp.setMinimal(true); | |
446 | 447 | |
448 | + QString str = QString(name).replace(regExp, "``\\1´´").trimmed(); | |
447 | 449 | for(size_t i = 0; CLEAN_FILE_NAME[i].search; i++) |
448 | 450 | { |
449 | 451 | str.replace(CLEAN_FILE_NAME[i].search, CLEAN_FILE_NAME[i].replace); |
450 | 452 | } |
451 | 453 | |
452 | - QRegExp regExp("\"(.+)\""); | |
453 | - regExp.setMinimal(true); | |
454 | - str.replace(regExp, "`\\1´"); | |
455 | - | |
456 | - return str.simplified(); | |
454 | + while(str.endsWith(QLatin1Char('.'))) | |
455 | + { | |
456 | + str.chop(1); | |
457 | + str = str.trimmed(); | |
458 | + } | |
459 | + | |
460 | + return str.trimmed(); | |
457 | 461 | } |
458 | 462 | |
459 | 463 | QString MUtils::clean_file_path(const QString &path) |
460 | 464 | { |
461 | - QStringList parts = path.simplified().replace("\\", "/").split("/", QString::SkipEmptyParts); | |
465 | + const bool root = path.startsWith(QLatin1Char('/')) || path.startsWith(QLatin1Char('\\')); | |
466 | + QStringList parts = QDir::fromNativeSeparators(path.trimmed()).split(QLatin1Char('/'), QString::SkipEmptyParts); | |
462 | 467 | |
463 | 468 | for(int i = 0; i < parts.count(); i++) |
464 | 469 | { |
470 | + if((i == 0) && (!root) && (parts[i].length() == 2) && parts[i][0].isLetter() && (parts[i][1] == QLatin1Char(':'))) | |
471 | + { | |
472 | + continue; //handle case "c:\" | |
473 | + } | |
465 | 474 | parts[i] = MUtils::clean_file_name(parts[i]); |
466 | 475 | } |
467 | 476 | |
468 | - return parts.join("/"); | |
477 | + return root ? parts.join(QLatin1String("/")).prepend(QLatin1Char('/')) : parts.join(QLatin1String("/")); | |
469 | 478 | } |
470 | 479 | |
471 | 480 | /////////////////////////////////////////////////////////////////////////////// |