UNPKG

1.26 kBJavaScriptView Raw
1var str = '"BB"/** sdfsdfs **/"CC"';
2var str2 = '"BBB"/* sdfsdfs */ "CCC" /* "asdfasdf" **/ \n' +
3 '"D""E"';
4
5
6function extractStrings(str) {
7
8 var result = [];
9
10 var quote_opened;
11 var afterSlash;
12 var comment_opened;
13 var buffer = '';
14
15 for (var i = 0, character; character = str[i]; i++) {
16 switch (character) {
17 case '"':
18 if (comment_opened) {
19 break;
20 }
21 if (quote_opened) {
22 result.push(buffer);
23 buffer = '';
24 quote_opened = false;
25 } else {
26 quote_opened = true;
27 }
28 break;
29 case '/':
30 if (quote_opened) {
31 buffer += character;
32 } else if (str[i + 1] == '*') {
33 i++;
34 comment_opened = true;
35 }
36 break;
37 case '*':
38 if (quote_opened) {
39 buffer += character;
40 } else if (comment_opened && str[i + 1] == '/') {
41 i++;
42 comment_opened = false;
43 } else if (quote_opened && !comment_opened) {
44 buffer += character;
45 }
46 break;
47 default:
48 if (quote_opened) {
49 buffer += character;
50 }
51 break;
52 }
53 }
54
55 return result;
56}
57
58
59console.log(extractStrings('"AAA"'));
60console.log(extractStrings('"/*AAA*/"'));
61console.log(extractStrings('/*"BBB"*/'));
62console.log(extractStrings('/**"BBB"**/'));
63console.log(extractStrings('"/*A" BBB "A*/"'));
\No newline at end of file