Java 替换“<&引用;及&燃气轮机&引用;加上&;lt&引用;及&;燃气轮机&引用;
如果它不是html标记的一部分,我想用Java 替换“<&引用;及&燃气轮机&引用;加上&;lt&引用;及&;燃气轮机&引用;,java,android,Java,Android,如果它不是html标记的一部分,我想用和替换。 输入将是一个可能包含某些html标记的字符串。它还可以包含小于号和大于号(“>”粗体) 字符串示例3=“foo>>” 作为我想要得到的输出: String output1 = "-> <b> Bold </b> <-"; String output2 = "< <i> Italic </i> >"; String output3 = "<
和
替换
。
输入将是一个可能包含某些html标记的字符串。它还可以包含小于号和大于号(“>”粗体)
字符串示例3=“foo>>”
作为我想要得到的输出:
String output1 = "-> <b> Bold </b> <-";
String output2 = "< <i> Italic </i> >";
String output3 = "<i>foo >> </i>";
String output1=“-Bold-”;
字符串output2=“斜体”;
字符串output3=“foo”;
所以,replaceAll
不起作用,我想我必须使用正则表达式匹配。有什么想法吗?其他方法
注1:由于某些项目要求,第三方库不是一个选项。注2:我们只支持HTML标记的子集(文本样式标记:斜体、下划线、粗体等)如果您不想麻烦使用外部库,则需要使用所有HTML标记创建一个数组,并针对字符串运行它
我并不推荐它,因为有这样的库…如果您不想麻烦使用外部库,那么您需要创建一个包含所有html标记的数组,并针对字符串运行它
我真的不推荐它,因为有用于该功能的库…假设有任意HTML文件,您必须隔离文本节点并在这些节点上运行
replace
如果你不能使用现有的库,我会自己写
(JSoup可以做到这一点,但它是一个“外部库”——也就是说,不包括在Java SE标准中,但只是重新实现它是一个选项。)假设有任意HTML文件,您必须隔离文本节点并在这些节点上运行
replace
如果你不能使用现有的库,我会自己写
(JSoup可以做到这一点,但它是一个“外部库”——也就是说,不包括在Java SE标准中,但只是重新实现它是一个选项。)这是一项非繁琐的任务。HTML不是一种常规语言(可能是不规则的?),因此不能使用正则表达式对其进行解析。我建议如下: 选择1 如果不需要保留空白,请使用此选项
对于输入中的每个字符。转换字符为{“>”,“这是一项非繁琐的任务。HTML不是常规语言(可能是不规则的?),因此您无法使用正则表达式对其进行解析。我建议如下: 选择1 如果不需要保留空白,请使用此选项
对于输入中的每个字符。转换字符为{“>”,“,假设字符串包含有效的
HTML标记
。可以应用以下方法来解析字符串,以获得您要查找的结果:
private static String parse(String str)
{
StringBuilder sBuilder = new StringBuilder();
for (int i = 0 ; i < str.length() ; i++)
{
char ch = str.charAt(i);
if (ch == '>' && i != 0)
{
char c = str.charAt( i - 1);
if (Character.isWhitespace(c) || !Character.isLetter(c))
{
sBuilder.append(">");
}
else
sBuilder.append(ch);
}
else if (ch == '>' && i==0)
{
sBuilder.append(">");
}
else if (ch == '<' && i < str.length() - 1)
{
char c = str.charAt( i + 1);
if (!(c=='/' || Character.isLetter(c)))
{
sBuilder.append("<");
}
else
sBuilder.append(ch);
}
else if (ch == '<' && i == str.length() - 1)
{
sBuilder.append("<");
}
else
{
sBuilder.append(ch);
}
}
return sBuilder.toString();
}
私有静态字符串解析(字符串str)
{
StringBuilder sBuilder=新StringBuilder();
对于(int i=0;i'&&i!=0)
{
charc=str.charAt(i-1);
if(Character.isWhitespace(c)| |!Character.isLetter(c))
{
sBuilder.append(“”);
}
其他的
sBuilder.append(ch);
}
否则(ch=='>”&&i==0)
{
sBuilder.append(“”);
}
else if(ch=='假设字符串包含有效的HTML标记
。可以应用以下方法来解析字符串,以获得所需的结果:
private static String parse(String str)
{
StringBuilder sBuilder = new StringBuilder();
for (int i = 0 ; i < str.length() ; i++)
{
char ch = str.charAt(i);
if (ch == '>' && i != 0)
{
char c = str.charAt( i - 1);
if (Character.isWhitespace(c) || !Character.isLetter(c))
{
sBuilder.append(">");
}
else
sBuilder.append(ch);
}
else if (ch == '>' && i==0)
{
sBuilder.append(">");
}
else if (ch == '<' && i < str.length() - 1)
{
char c = str.charAt( i + 1);
if (!(c=='/' || Character.isLetter(c)))
{
sBuilder.append("<");
}
else
sBuilder.append(ch);
}
else if (ch == '<' && i == str.length() - 1)
{
sBuilder.append("<");
}
else
{
sBuilder.append(ch);
}
}
return sBuilder.toString();
}
私有静态字符串解析(字符串str)
{
StringBuilder sBuilder=新StringBuilder();
对于(int i=0;i'&&i!=0)
{
charc=str.charAt(i-1);
if(Character.isWhitespace(c)| |!Character.isLetter(c))
{
sBuilder.append(“”);
}
其他的
sBuilder.append(ch);
}
else if(ch='>'&&i==0)
{
sBuilder.append(“”);
}
else if(ch==”如果只支持五个html标记,则可以首先从文本中删除这些标记。
将<和>替换为<和>,然后再次添加html标记。您可以将从文本中删除,方法是将其替换为例如[b]。对其他标记执行相同操作。如果您只支持五个html标记,则可以先从文本中删除这些标记。
将<和>替换为<和>,然后再次添加html标记。您可以将从文本中删除
,方法是将其替换为例如[b]。对其他标记执行相同操作。为了完整起见,“foo>>怎么样?仅仅是你想留下的标签还是它们的内容?@scorpiodawg我更新了这个问题,检查itOh和另一个问题:你想留下特定的HTML标签,还是任何看起来像标签的东西?字符串“”的输出应该是什么?我们支持HTML标签的子集(大约5个),它们应该完好无损。因此输入输出应该是:“qxg/qxq”只是为了完整,那么“foo>>”呢?它只是你想留下的标记还是它们的内容?@scorpiodawg我更新了这个问题,检查itOh和另一个问题:你想要特别的HTML标记吗