回答編集履歴
5
LINQですよね
test
CHANGED
@@ -21,3 +21,45 @@
|
|
21
21
|
//-> 12.5.0\U0000\U0000\U0000\U0000\U0000\U0000\U0002\U0000\U0000\U0080
|
22
22
|
|
23
23
|
```
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
-- 追記
|
28
|
+
|
29
|
+
ベストアンサ決まってますけど、まあこんな感じのほうがC#っぽいはず
|
30
|
+
|
31
|
+
```csharp
|
32
|
+
|
33
|
+
static void Main()
|
34
|
+
|
35
|
+
{
|
36
|
+
|
37
|
+
var str = "12.5.0\0\0\0\0\0\0\u0002\0\0\u0080\r\n\tあa";
|
38
|
+
|
39
|
+
Console.WriteLine(string.Join(string.Empty, str.Select(Converter)));
|
40
|
+
|
41
|
+
// -> 12.5.0\0\0\0\0\0\0\U0002\0\0\U0080\r\n\tあa
|
42
|
+
|
43
|
+
}
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
static string Converter(char c)
|
48
|
+
|
49
|
+
{
|
50
|
+
|
51
|
+
if (!char.IsControl(c)) // char.IsControlを使えば、"あ"は回避できるはず
|
52
|
+
|
53
|
+
{
|
54
|
+
|
55
|
+
return c.ToString();
|
56
|
+
|
57
|
+
}
|
58
|
+
|
59
|
+
var specified = new Dictionary<char, string> { { '\0', "\0" }, { '\r', "\r" }, { '\n', "\n" }, { '\t', "\t" }, };
|
60
|
+
|
61
|
+
return specified.Keys.Contains(c) ? specified[c] : $@"\U{(int)c:X4}";
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
```
|
4
たいぽ
test
CHANGED
@@ -18,6 +18,6 @@
|
|
18
18
|
|
19
19
|
Console.WriteLine(string.Join(string.Empty/*必要に応じて、" "や、", "にすると見易い*/, str.Select(c => char.IsControl(c) ? $@"\U{(int)c:X4}" : c.ToString())));
|
20
20
|
|
21
|
-
//-> 2.5.0\U0000\U0000\U0000\U0000\U0000\U0000\U0002\U0000\U0000\U0080
|
21
|
+
//-> 12.5.0\U0000\U0000\U0000\U0000\U0000\U0000\U0002\U0000\U0000\U0080
|
22
22
|
|
23
23
|
```
|
3
とりあえずエンマーク
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
-- 修正
|
9
|
+
-- 修正(エンマークが出るように修正済み)
|
10
10
|
|
11
11
|
やりたいことはreplaceでなくて、"制御文字を可視化したい"なので、`char.IsControl`を使えばいい。
|
12
12
|
|
@@ -16,8 +16,8 @@
|
|
16
16
|
|
17
17
|
var str = "12.5.0\0\0\0\0\0\0\u0002\0\0\u0080";
|
18
18
|
|
19
|
-
Console.WriteLine(string.Join(string.Empty/*必要に応じて、" "や、", "にすると見易い*/, str.Select(c => char.IsControl(c) ? $"U{(int)c:X4}" : c.ToString())));
|
19
|
+
Console.WriteLine(string.Join(string.Empty/*必要に応じて、" "や、", "にすると見易い*/, str.Select(c => char.IsControl(c) ? $@"\U{(int)c:X4}" : c.ToString())));
|
20
20
|
|
21
|
-
//->
|
21
|
+
//-> 2.5.0\U0000\U0000\U0000\U0000\U0000\U0000\U0002\U0000\U0000\U0080
|
22
22
|
|
23
23
|
```
|
2
deindent
test
CHANGED
@@ -14,9 +14,9 @@
|
|
14
14
|
|
15
15
|
```csharp
|
16
16
|
|
17
|
-
|
17
|
+
var str = "12.5.0\0\0\0\0\0\0\u0002\0\0\u0080";
|
18
18
|
|
19
|
-
|
19
|
+
Console.WriteLine(string.Join(string.Empty/*必要に応じて、" "や、", "にすると見易い*/, str.Select(c => char.IsControl(c) ? $"U{(int)c:X4}" : c.ToString())));
|
20
20
|
|
21
21
|
//-> 12.5.0U0000U0000U0000U0000U0000U0000U0002U0000U0000U0080
|
22
22
|
|
1
linq
test
CHANGED
@@ -1 +1,23 @@
|
|
1
1
|
`str.Replace("\", "\");`
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
//間違っているけどコメントついてるので残します
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
-- 修正
|
10
|
+
|
11
|
+
やりたいことはreplaceでなくて、"制御文字を可視化したい"なので、`char.IsControl`を使えばいい。
|
12
|
+
|
13
|
+
ってことは、Linqが使えるので、例えばこんな感じでどうですかね?
|
14
|
+
|
15
|
+
```csharp
|
16
|
+
|
17
|
+
var str = "12.5.0\0\0\0\0\0\0\u0002\0\0\u0080";
|
18
|
+
|
19
|
+
Console.WriteLine(string.Join(string.Empty/*必要に応じて、" "や、", "にすると見易い*/, str.Select(c => char.IsControl(c) ? $"U{(int)c:X4}" : c.ToString())));
|
20
|
+
|
21
|
+
//-> 12.5.0U0000U0000U0000U0000U0000U0000U0002U0000U0000U0080
|
22
|
+
|
23
|
+
```
|