说我有一个数组“ x”,x在控制台中显示为<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
xmlns:cc="clr-namespace:WpfCustomControlLibrary1;assembly=WpfCustomControlLibrary1"
Title="MainWindow" Height="200" Width="200">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" x:Name="TitleBox" Text="ABC"/>
<Frame Grid.Row="1" x:Name="DisFrame">
<Frame.Content>
<cc:InputValuePage InputTitle="{Binding ElementName=TitleBox, Path=Text}"/>
</Frame.Content>
</Frame>
</Grid>
</Window>
。如何将其全部转换为带有所有括号和引号的字符串?
例如,这应该输出
[["A", "B", "C"], ["D", "E", "F"]]
(如果可能的话,将反斜杠添加到特殊字符(例如"[["A", "B", "C"], ["D", "E", "F"]]"
)也很好)
答案 0 :(得分:0)
尝试JSON.stringify
:
var x = [["A", "B", "C"], ["D", "E", "F"]];
var string = JSON.stringify(x);
答案 1 :(得分:0)
要像在控制台中一样打印它,可以使用loadable-components
。
JSON.stringify()
如果您还想在每个括号和引号中添加反斜杠,则可以遍历字符串的每个字符,并在需要的地方添加反斜杠。
const arr = [["A", "B", "C"], ["D", "E", "F"]];
const str = JSON.stringify(arr); // [["A","B","C"],["D","E","F"]]
如果您不想使用ES6,则可以通过简单的for循环进行操作
// ES6 version
let escapedStr = "";
[...str].forEach(c => {
if (c === ']' || c === '[' || c === '"') c = `\\${c}`;
escapedStr += c;
});
console.log(escapedStr) // \[\[\"A\",\"B\",\"C\"\],\[\"D\",\"E\",\"F\"\]\]
编辑:使用正则表达式可以一站式解决问题
for (var i = 0, c=''; c = str.charAt(i); i++) {
if (c === ']' || c === '[' || c === '"') c = `\\${c}`;
escapedStr += c;
}