Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * This library is open source software licensed under terms of the MIT License.
- *
- * Copyright (c) 2012-2021 Petr Červinka - FortSoft <[email protected]>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- **
- * Version 1.0.0.0
- */
- using System;
- using System.Text;
- using System.Text.RegularExpressions;
- namespace FortSoft.Tools {
- public static class IsbnIssn {
- public static bool TestIsbnStrict(string isbn) {
- if (!Regex.IsMatch(isbn, @"^ISBN\s(\d+-\d+-\d+-(\d|X)|\d+\s\d+\s\d+\s(\d|X))$") && !Regex.IsMatch(isbn, @"^ISBN\s(\d{3}-\d+-\d+-\d+-\d|\d{3}\s\d+\s\d+\s\d+\s\d)$")) {
- return false;
- }
- return TestRawIsbn(RawIsbn(isbn));
- }
- public static bool TestIsbnBasic(string isbn) {
- return TestRawIsbn(RawIsbn(isbn));
- }
- public static bool TestRawIsbn(string isbn) {
- int n = 0;
- if (isbn.Length == 10) {
- for (int i = 0; i < 10; i++) {
- n += (isbn[i] == 'X' ? 10 : int.Parse(isbn[i].ToString())) * (10 - i);
- }
- return n % 11 == 0;
- } else if (isbn.Length == 13) {
- for (int i = 0; i < 13; i++) {
- n += int.Parse(isbn[i].ToString()) * (i % 2 == 0 ? 1 : 3);
- }
- return n % 10 == 0;
- } else {
- return false;
- }
- }
- public static string RawIsbn(string isbn) {
- if (!Regex.IsMatch(isbn, @"^\s*(ISBN\s+)?(\d{3}(-|\s+)?)?\d+(-|\s+)?\d+(-|\s+)?\d+(-|\s+)?(\d|X)\s*$", RegexOptions.IgnoreCase)) {
- throw new FormatException("Invalid ISBN.");
- }
- Regex regex = new Regex(@"^\s*(ISBN\s+)?((\d{3})(-|\s+)?)?(\d+)(-|\s+)?(\d+)(-|\s+)?(\d+)(-|\s+)?(\d|X)\s*$", RegexOptions.IgnoreCase);
- isbn = regex.Replace(isbn, "$3$5$7$9$11");
- if (isbn.Length != 10 && isbn.Length != 13) {
- throw new FormatException("Invalid ISBN.");
- }
- return isbn.ToUpper();
- }
- public static string FormatIsbn(string isbn, bool isbnPrefix) {
- isbn = RawIsbn(isbn);
- string n = isbn;
- string p = null;
- if (n.Length == 13) {
- p = n.Substring(0, 3);
- n = n.Substring(3);
- }
- string c = n.Substring(n.Length - 1).ToUpper();
- n = n.Substring(0, n.Length - 1);
- int l1 = 0;
- int n0 = int.Parse(n.Substring(0, 1));
- if (n0 <= 5 || n0 == 7) {
- l1 = 1;
- } else if (n0 == 8) {
- l1 = 2;
- } else if (n0 == 9) {
- int n1 = int.Parse(n.Substring(1, 1));
- if (n1 <= 2) {
- l1 = 2;
- } else if (n1 <= 8) {
- l1 = 3;
- } else if (n1 == 9) {
- int n2 = int.Parse(n.Substring(2, 1));
- if (n2 >= 4 && n2 <= 8) {
- l1 = 4;
- } else if (n2 == 9) {
- l1 = 5;
- }
- }
- }
- if (l1 == 0) {
- throw new NotImplementedException("Not defined.");
- }
- string g1 = n.Substring(0, l1);
- n = n.Substring(l1);
- int l2 = 0;
- int g = int.Parse(g1);
- int v = int.Parse(n);
- if (g == 0) {
- if (v < 20000000) {
- l2 = 2;
- } else if (v < 70000000) {
- l2 = 3;
- } else if (v < 85000000) {
- l2 = 4;
- } else if (v < 90000000) {
- l2 = 5;
- } else if (v < 95000000) {
- l2 = 6;
- } else {
- l2 = 7;
- }
- } else if (g == 1) {
- if (v < 10000000) {
- l2 = 2;
- } else if (v < 40000000) {
- l2 = 3;
- } else if (v < 55000000) {
- l2 = 4;
- } else if (v < 86980000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 2) {
- if (v < 20000000) {
- l2 = 2;
- } else if (v < 35000000) {
- l2 = 4;
- } else if (v < 40000000) {
- l2 = 2;
- } else if (v < 70000000) {
- l2 = 3;
- } else if (v < 84000000) {
- l2 = 4;
- } else if (v < 90000000) {
- l2 = 5;
- } else if (v < 95000000) {
- l2 = 6;
- } else {
- l2 = 7;
- }
- } else if (g == 3) {
- if (v < 3000000) {
- l2 = 2;
- } else if (v < 3400000) {
- l2 = 3;
- } else if (v < 3700000) {
- l2 = 4;
- } else if (v < 4000000) {
- l2 = 1;
- } else if (v < 20000000) {
- l2 = 2;
- } else if (v < 70000000) {
- l2 = 3;
- } else if (v < 85000000) {
- l2 = 4;
- } else if (v < 90000000) {
- l2 = 5;
- } else if (v < 95000000) {
- l2 = 6;
- } else {
- l2 = 7;
- }
- } else if (g == 4) {
- if (v < 20000000) {
- l2 = 2;
- } else if (v < 70000000) {
- l2 = 3;
- } else if (v < 85000000) {
- l2 = 4;
- } else if (v < 90000000) {
- l2 = 5;
- } else if (v < 95000000) {
- l2 = 6;
- } else {
- l2 = 7;
- }
- } else if (g == 5) {
- if (v < 20000000) {
- l2 = 2;
- } else if (v < 70000000) {
- l2 = 3;
- } else if (v < 85000000) {
- l2 = 4;
- } else if (v < 90000000) {
- l2 = 5;
- } else if (v < 91000000) {
- l2 = 4;
- } else if (v < 92000000) {
- l2 = 3;
- } else if (v < 93000000) {
- l2 = 4;
- } else if (v < 95000000) {
- l2 = 3;
- } else if (v < 98000000) {
- l2 = 4;
- } else if (v < 99000000) {
- l2 = 6;
- } else if (v < 99100000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 600) {
- if (v < 100000) {
- l2 = 2;
- } else if (v < 500000) {
- l2 = 3;
- } else if (v < 900000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 601) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 700000) {
- l2 = 3;
- } else if (v < 800000) {
- l2 = 4;
- } else if (v < 850000) {
- l2 = 1;
- } else {
- l2 = 2;
- }
- } else if (g == 602) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 800000) {
- l2 = 3;
- } else if (v < 950000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 7) {
- if (v < 10000000) {
- l2 = 2;
- } else if (v < 50000000) {
- l2 = 3;
- } else if (v < 80000000) {
- l2 = 4;
- } else if (v < 90000000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 80) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 7000000) {
- l2 = 3;
- } else if (v < 8500000) {
- l2 = 4;
- } else if (v < 9000000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 81) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 7000000) {
- l2 = 3;
- } else if (v < 8500000) {
- l2 = 4;
- } else if (v < 9000000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 82) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 7000000) {
- l2 = 3;
- } else if (v < 9000000) {
- l2 = 4;
- } else if (v < 9900000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 83) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 6000000) {
- l2 = 4;
- } else if (v < 7000000) {
- l2 = 3;
- } else if (v < 8500000) {
- l2 = 4;
- } else if (v < 9000000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 84) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 7000000) {
- l2 = 3;
- } else if (v < 8500000) {
- l2 = 4;
- } else if (v < 9000000) {
- l2 = 3;
- } else if (v < 9200000) {
- l2 = 5;
- } else if (v < 9240000) {
- l2 = 4;
- } else if (v < 9300000) {
- l2 = 5;
- } else if (v < 9500000) {
- l2 = 4;
- } else if (v < 9700000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 85) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 6000000) {
- l2 = 4;
- } else if (v < 7000000) {
- l2 = 3;
- } else if (v < 8500000) {
- l2 = 4;
- } else if (v < 9000000) {
- l2 = 5;
- } else if (v < 9800000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 86) {
- if (v < 3000000) {
- l2 = 2;
- } else if (v < 6000000) {
- l2 = 3;
- } else if (v < 8000000) {
- l2 = 4;
- } else if (v < 9000000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 87) {
- if (v < 3010000) {
- l2 = 2;
- } else if (v < 6901000) {
- l2 = 3;
- } else if (v < 8400100) {
- l2 = 4;
- } else if (v < 9600010) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 88) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 6000000) {
- l2 = 3;
- } else if (v < 8500000) {
- l2 = 4;
- } else if (v < 9000000) {
- l2 = 5;
- } else if (v < 9500000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 89) {
- if (v < 2500000) {
- l2 = 2;
- } else if (v < 5500000) {
- l2 = 3;
- } else if (v < 8500000) {
- l2 = 4;
- } else if (v < 9500000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 90) {
- if (v < 2000000) {
- l2 = 2;
- } else if (v < 5000000) {
- l2 = 3;
- } else if (v < 7000000) {
- l2 = 4;
- } else if (v < 8000000) {
- l2 = 5;
- } else if (v < 8500000) {
- l2 = 3;
- } else if (v < 9000000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 91) {
- if (v < 2000000) {
- l2 = 1;
- } else if (v < 5000000) {
- l2 = 2;
- } else if (v < 6901000) {
- l2 = 3;
- } else if (v < 8400100) {
- l2 = 4;
- } else if (v < 9600010) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 92) {
- if (v < 6000000) {
- l2 = 1;
- } else if (v < 8000000) {
- l2 = 2;
- } else if (v < 9000000) {
- l2 = 3;
- } else if (v < 9500000) {
- l2 = 4;
- } else if (v < 9900000) {
- l2 = 5;
- } else {
- l2 = 6;
- }
- } else if (g == 950) {
- if (v < 500000) {
- l2 = 2;
- } else if (v < 900000) {
- l2 = 3;
- } else if (v < 990000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 951) {
- if (v < 200000) {
- l2 = 1;
- } else if (v < 550000) {
- l2 = 2;
- } else if (v < 890000) {
- l2 = 3;
- } else if (v < 950000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 952) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 500000) {
- l2 = 3;
- } else if (v < 600000) {
- l2 = 1;
- } else if (v < 660000) {
- l2 = 3;
- } else if (v < 670000) {
- l2 = 4;
- } else if (v < 700000) {
- l2 = 3;
- } else if (v < 800000) {
- l2 = 1;
- } else if (v < 950000) {
- l2 = 3;
- } else if (v < 990000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 953) {
- if (v < 100000) {
- l2 = 1;
- } else if (v < 150000) {
- l2 = 2;
- } else if (v < 550000) {
- l2 = 4;
- } else if (v < 600000) {
- l2 = 3;
- } else if (v < 950000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 954) {
- if (v < 300000) {
- l2 = 2;
- } else if (v < 800000) {
- l2 = 3;
- } else if (v < 900000) {
- l2 = 4;
- } else if (v < 930000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 955) {
- if (v < 100000) {
- l2 = 3;
- } else if (v < 200000) {
- l2 = 1;
- } else if (v < 550000) {
- l2 = 2;
- } else if (v < 800000) {
- l2 = 3;
- } else if (v < 950000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 956) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 700000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 957) {
- if (v < 200000) {
- l2 = 3;
- } else if (v < 210000) {
- l2 = 1;
- } else if (v < 280000) {
- l2 = 4;
- } else if (v < 310000) {
- l2 = 1;
- } else if (v < 440000) {
- l2 = 2;
- } else if (v < 820000) {
- l2 = 3;
- } else if (v < 970000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 958) {
- if (v < 600000) {
- l2 = 2;
- } else if (v < 800000) {
- l2 = 3;
- } else if (v < 950000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 959) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 700000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 960) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 660000) {
- l2 = 3;
- } else if (v < 690000) {
- l2 = 2;
- } else if (v < 700000) {
- l2 = 3;
- } else if (v < 850000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 961) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 600000) {
- l2 = 3;
- } else if (v < 900000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 962) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 700000) {
- l2 = 3;
- } else if (v < 850000) {
- l2 = 4;
- } else if (v < 870000) {
- l2 = 3;
- } else if (v < 900000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 963) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 700000) {
- l2 = 3;
- } else if (v < 850000) {
- l2 = 4;
- } else if (v < 900000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 964) {
- if (v < 150000) {
- l2 = 2;
- } else if (v < 250000) {
- l2 = 3;
- } else if (v < 300000) {
- l2 = 2;
- } else if (v < 550000) {
- l2 = 3;
- } else if (v < 900000) {
- l2 = 4;
- } else if (v < 970000) {
- l2 = 2;
- } else if (v < 990000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 965) {
- if (v < 200000) {
- l2 = 2;
- } else if (v < 690100) {
- l2 = 3;
- } else if (v < 890010) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 966) {
- if (v < 200000) {
- l2 = 3;
- } else if (v < 300000) {
- l2 = 2;
- } else if (v < 700000) {
- l2 = 3;
- } else if (v < 900000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 967) {
- if (v < 300000) {
- l2 = 2;
- } else if (v < 500000) {
- l2 = 3;
- } else if (v < 600000) {
- l2 = 1;
- } else if (v < 900000) {
- l2 = 2;
- } else if (v < 990000) {
- l2 = 3;
- } else if (v < 999000) {
- l2 = 4;
- } else {
- l2 = 5;
- }
- } else if (g == 968) {
- if (v < 10000) {
- l2 = 1;
- } else if (v < 400000) {
- l2 = 2;
- } else if (v < 500000) {
- l2 = 3;
- } else if (v < 800000) {
- l2 = 2;
- } else if (v < 900000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 969) {
- if (v < 200000) {
- l2 = 1;
- } else if (v < 400000) {
- l2 = 2;
- } else if (v < 800000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 971) {
- l2 = 3;
- } else if (g == 972) {
- l2 = 1;
- } else if (g == 974) {
- l2 = 2;
- } else if (g == 975) {
- l2 = 5;
- } else if (g == 976) {
- l2 = 1;
- } else if (g == 977) {
- l2 = 2;
- } else if (g == 978) {
- l2 = 3;
- } else if (g == 980) {
- l2 = 2;
- } else if (g == 989) {
- l2 = 1;
- } else if (g == 9940) {
- if (v < 20000) {
- l2 = 1;
- } else if (v < 50000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9941) {
- if (v < 10000) {
- l2 = 1;
- } else if (v < 40000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9942) {
- if (v < 90000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 9943) {
- if (v < 30000) {
- l2 = 2;
- } else if (v < 40000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9944) {
- if (v < 30000) {
- l2 = 2;
- } else if (v < 50000) {
- l2 = 3;
- } else if (v < 60000) {
- l2 = 1;
- } else if (v < 90000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 9945) {
- if (v < 40000) {
- l2 = 2;
- } else if (v < 57000) {
- l2 = 1;
- } else if (v < 58000) {
- l2 = 2;
- } else if (v < 85000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9946) {
- if (v < 20000) {
- l2 = 1;
- } else if (v < 40000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9947) {
- if (v < 20000) {
- l2 = 1;
- } else if (v < 80000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 9948) {
- if (v < 40000) {
- l2 = 2;
- } else if (v < 85000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9949) {
- if (v < 10000) {
- l2 = 1;
- } else if (v < 40000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9950) {
- if (v < 30000) {
- l2 = 2;
- } else if (v < 85000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9951) {
- if (v < 40000) {
- l2 = 2;
- } else if (v < 85000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9952) {
- if (v < 20000) {
- l2 = 1;
- } else if (v < 40000) {
- l2 = 2;
- } else if (v < 80000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9953) {
- if (v < 10000) {
- l2 = 1;
- } else if (v < 40000) {
- l2 = 2;
- } else if (v < 60000) {
- l2 = 1;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9954) {
- if (v < 20000) {
- l2 = 1;
- } else if (v < 40000) {
- l2 = 2;
- } else if (v < 80000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9955) {
- if (v < 40000) {
- l2 = 2;
- } else if (v < 93000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9956) {
- if (v < 10000) {
- l2 = 1;
- } else if (v < 40000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9957) {
- if (v < 40000) {
- l2 = 2;
- } else if (v < 70000) {
- l2 = 1;
- } else if (v < 85000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9958) {
- if (v < 10000) {
- l2 = 1;
- } else if (v < 50000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9959) {
- if (v < 20000) {
- l2 = 1;
- } else if (v < 80000) {
- l2 = 2;
- } else if (v < 95000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9960) {
- if (v < 60000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9961) {
- if (v < 30000) {
- l2 = 1;
- } else if (v < 70000) {
- l2 = 2;
- } else if (v < 95000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9962) {
- if (v < 55000) {
- l2 = 3;
- } else if (v < 56000) {
- l2 = 1;
- } else if (v < 60000) {
- l2 = 2;
- } else if (v < 85000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9963) {
- if (v < 30000) {
- l2 = 1;
- } else if (v < 55000) {
- l2 = 2;
- } else if (v < 75000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9964) {
- if (v < 70000) {
- l2 = 1;
- } else if (v < 95000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 9965) {
- if (v < 40000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9966) {
- if (v < 70000) {
- l2 = 3;
- } else if (v < 75000) {
- l2 = 2;
- } else if (v < 96000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9967) {
- if (v < 40000) {
- l2 = 2;
- } else if (v < 90000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9968) {
- if (v < 50000) {
- l2 = 2;
- } else if (v < 94000) {
- l2 = 3;
- } else {
- l2 = 4;
- }
- } else if (g == 9970) {
- l2 = 2;
- } else if (g == 9971) {
- l2 = 1;
- } else if (g == 9972) {
- l2 = 2;
- } else if (g == 9973) {
- l2 = 1;
- } else if (g == 9977) {
- l2 = 2;
- } else if (g == 9979) {
- l2 = 1;
- } else if (g == 9981) {
- l2 = 2;
- } else if (g == 9985) {
- l2 = 1;
- } else if (g == 9986) {
- l2 = 2;
- } else if (g == 9988) {
- l2 = 1;
- } else if (g == 99910) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99912) {
- if (v < 4000) {
- l2 = 2;
- } else if (v < 6000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99913) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 5910) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99914) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99915) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99916) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 7000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99917) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99918) {
- if (v < 4000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99919) {
- if (v < 4000) {
- l2 = 1;
- } else if (v < 8910) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99920) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99921) {
- if (v < 2000) {
- l2 = 1;
- } else if (v < 7000) {
- l2 = 2;
- } else if (v < 8000) {
- l2 = 0;
- } else if (v < 9000) {
- l2 = 1;
- } else {
- l2 = 2;
- }
- } else if (g == 99922) {
- if (v < 4000) {
- l2 = 1;
- } else if (v < 7000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99923) {
- if (v < 2000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99924) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99925) {
- if (v < 4000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99926) {
- if (v < 1000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99927) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99928) {
- if (v < 1000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99929) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99930) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99931) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99932) {
- if (v < 1000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else if (v < 7000) {
- l2 = 0;
- } else if (v < 8000) {
- l2 = 1;
- } else {
- l2 = 2;
- }
- } else if (g == 99933) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99934) {
- if (v < 2000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99935) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else if (v < 7000) {
- l2 = 0;
- } else if (v < 9000) {
- l2 = 1;
- } else {
- l2 = 2;
- }
- } else if (g == 99936) {
- if (v < 1000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99937) {
- if (v < 2000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99938) {
- if (v < 2000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else if (v < 9000) {
- l2 = 1;
- } else {
- l2 = 2;
- }
- } else if (g == 99939) {
- if (v < 6000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99940) {
- if (v < 1000) {
- l2 = 1;
- } else if (v < 7000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99941) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99942) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99943) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99944) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99945) {
- if (v < 6000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99946) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99947) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 7000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99948) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99949) {
- if (v < 2000) {
- l2 = 1;
- } else if (v < 9000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99950) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99952) {
- if (v < 5000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99953) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 8000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99954) {
- if (v < 3000) {
- l2 = 1;
- } else if (v < 7000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else if (g == 99955) {
- if (v < 2000) {
- l2 = 1;
- } else if (v < 6000) {
- l2 = 2;
- } else if (v < 9000) {
- l2 = 1;
- } else {
- l2 = 2;
- }
- } else if (g == 99956) {
- if (v < 6000) {
- l2 = 2;
- } else {
- l2 = 3;
- }
- } else {
- throw new NotImplementedException("Not defined.");
- }
- if (l2 == 0) {
- throw new NotImplementedException("Not defined.");
- }
- string g2 = n.Substring(0, l2);
- string g3 = n.Substring(l2);
- StringBuilder stringBuilder = new StringBuilder();
- if (isbnPrefix) {
- stringBuilder.Append("ISBN ");
- }
- if (p != null) {
- stringBuilder.Append(p + "-");
- }
- stringBuilder.Append(g1 + "-" + g2 + "-" + g3 + "-" + c);
- return stringBuilder.ToString();
- }
- public static bool TestIssnStrict(string issn) {
- if (!Regex.IsMatch(issn, @"^ISSN\s\d{4}-\d{3}(\d|X)$")) {
- return false;
- }
- return TestRawIssn(RawIssn(issn));
- }
- public static bool TestIssnBasic(string issn) {
- return TestRawIssn(RawIssn(issn));
- }
- public static bool TestRawIssn(string issn) {
- int n = 0;
- if (issn.Length == 8) {
- for (int i = 0; i < 8; i++) {
- n += (issn[i] == 'X' ? 10 : int.Parse(issn[i].ToString())) * (8 - i);
- }
- return n % 11 == 0;
- } else {
- return false;
- }
- }
- public static string RawIssn(string issn) {
- if (!Regex.IsMatch(issn, @"^\s*(ISSN\s+)?\d{4}(-|\s+)?\d{3}(\d|X)\s*$", RegexOptions.IgnoreCase)) {
- throw new ArgumentException("Invalid ISSN.");
- }
- Regex regex = new Regex(@"^\s*(ISSN\s+)?(\d{4})(-|\s+)?(\d{3}(\d|X))\s*$", RegexOptions.IgnoreCase);
- issn = regex.Replace(issn, "$2$4");
- if (issn.Length != 8) {
- throw new ArgumentException("Invalid ISSN.");
- }
- return issn.ToUpper();
- }
- public static string FormatIssn(string issn, bool issnPrefix) {
- return issnPrefix ? "ISSN " + FormatIssn(issn) : FormatIssn(issn);
- }
- public static string FormatIssn(string issn) {
- issn = RawIssn(issn);
- return issn.Substring(0, 4) + "-" + issn.Substring(4, 4);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement