我正在尝试将所有数字单词0-9替换为字符串中相应的数字0-9。
我已经创建了数字单词和数字的两个数组,然后尝试使用替换循环来更改句子。
不确定我做错了什么。
我正在引用我的GetNodeDigitWordString
方法。
import java.util.*;
public class StringProcessor {
private String noSpaces;
private String input, noVowels;
private String noDigitWords;
private int numOfWords = 0, uppercaseLetters = 0,
numOfDigits = 0, digitWords = 0;
private String [] wordDigits = {"zero","one", "two", "three","four",
"five", "six", "seven", "eight", "nine"};
private String [] digits = {"0", "1", "2", "3", "4",
"5", "6", "7", "8", "9"};
public StringProcessor()
{
input = "";
}
public StringProcessor(String s)
{
StringTokenizer str = new StringTokenizer(s);
numOfWords = str.countTokens();
for (int i = 0; i < s.length(); i++)
{
if (Character.isUpperCase(s.charAt(i)))
uppercaseLetters++;
}
for (int i = 0; i < s.length(); i++)
{
if (Character.isDigit(s.charAt(i)))
numOfDigits++;
}
String [] strSplit = s.split(" ");
for(int i = 0; i < strSplit.length; i++)
{
for (int j = 0; j < wordDigits.length; j++)
{
if (strSplit[i].equalsIgnoreCase(wordDigits[j]))
digitWords++;
}
}
noSpaces = s.replace(" ","");
noVowels = s.replaceAll("[aeiou]", "-");
for(int i = 0; i < 10; i++)
{
noDigitWords = s.replace("wordDigits[i]", "digits[i]");
}
}
public void setString(String s)
{
input = s;
}
public String getString()
{
return input;
}
public int wordCount()
{
return numOfWords;
}
public int uppercaseCount()
{
return uppercaseLetters;
}
public int digitCount()
{
return numOfDigits;
}
public int digitWordCount()
{
return digitWords;
}
public String getNoSpaceString()
{
return noSpaces;
}
public String getNoVowelString()
{
return noVowels;
}
public String getNoDigitWordString()
{
return noDigitWords;
}
public static void main(String[] args)
{
String input;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a line of text: ");
input = keyboard.nextLine();
StringProcessor str = new StringProcessor(input);
System.out.println("words: " + str.wordCount());
System.out.println("uppercase: " + str.uppercaseCount());
System.out.println("digits: " + str.digitCount());
System.out.println("digit words " + str.digitWordCount());
System.out.println("line with no spaces: " + str.getNoSpaceString());
System.out.println("line with vowels replaced: " + str.getNoVowelString());
System.out.println("line with digit words replaced: " + str.getNoDigitWordString());
}
}
谢谢
每次以下代码调用replace
方法时,字符串noDigitWords
都会被覆盖。
for(int i = 0; i < 10; i++)
{
noDigitWords = s.replace("wordDigits[i]", "digits[i]");
}
在循环的最后一次迭代之后,字符串“one nine”会变成“one 9”,而不是所需的“19”。解决方案是对循环上一次迭代的返回值调用replace
方法。将字符串noDigitWords
初始化为字符串s
的值。每次迭代都在noDigitWords
上进行替换,如下所示。
noDigitWords = s;
for(int i = 0; i < 10; i++)
{
noDigitWords = noDigitWords.replace(wordDigits[i], digits[i]);
}
除了@dcharms指出的问题,这是行不通的:
for(int i = 0; i < 10; i++)
{
noDigitWords = s.replace(wordDigits[i], digits[i]);
}
发生的情况如下:首先,您搜索s
以查找“零”
,然后调用s.replace
。这将返回一个字符串,其中单词“零”
替换为“0”
。然后,该字符串被分配给noDigitWords
。但是s
本身并没有改变。
然后,下一次通过循环,您在原始s
中搜索下一个单词。您在之前迭代中所做的工作,即在noDigitWords
中所做的工作,被丢弃了。
结果将是,您搜索的最后一个单词,“nine”
,应该被替换。但你做的任何其他替代品都会被扔掉。
这就是你要找的:
noDigitWords = s;
for(int i = 0; i < strSplit.length; i++)
{
for (int j = 0; j < wordDigits.length; j++)
{
if (strSplit[i].equalsIgnoreCase(wordDigits[j])){
noDigitWords = noDigitWords.replace(strSplit[i], digits[j]);
break;
}
}
}
而不是这个:
for(int i = 0; i < 10; i++)
{
noDigitWords = s.replace("wordDigits[i]", "digits[i]");
}
我有每月的列值编号。 <代码>df 我想将其转换为: 1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月, 2月, 3月 有人能帮我吗? 提前感谢您抽出宝贵时间
我正在自己学习Java,并使用在线练习进行练习。到目前为止,我只学到了直到方法,所以在这个练习中使用数组超出了我的范围,即使一些在线解决方案使用数组来做我想做的事情。 练习是这样的:让用户输入一个带有元音的字符串。只要有元音字母,就将该元音显示为大写字母。 例如:如果用户输入“苹果”,正确的输出是苹果 到目前为止,我有这段代码: 当我运行我的代码时,例如,输入字符串“苹果”,我得到“苹果”作为我的
所以我是计算机科学的新手,我们被要求做的一件事是尝试创建一个程序,首先将用户输入的一个单词转换成一个数字串,a=1,b=2,z=26等等,还有一些其他的事情,因为它们是扩展,我现在不想讨论。诚然,她说她不介意我们完成它,因为这是我们今天的第一节java课程。 有鉴于此,有人能给我一些关于如何做到这一点的建议吗?我不想让一段完整的代码完全做到这一点,因为我需要学习,因此非常感谢指导之手。到目前为止,
问题内容: 我有一个数据库,其中的列包含数字格式的值,例如: 在浏览器中显示时,它应该显示5k表示5000,86.6k表示86600等。我需要php中的代码。如果有任何内置函数可以执行此操作,请提及它。 问题答案: 如果将它们作为数字,则可以直接使用此功能。 如果您没有数字,请使用PHP:取消格式化 对于您的特殊情况,您可能会使用一些肮脏的技巧,但是如果您有其他特殊情况,我不建议您这样做。
我想比较两个表达式。我从数据库中获得了数字字符串形式的数据数组,我需要将其转换为数字,然后再使用ngClass为样式设置提供条件。如何转换此类型。有什么想法吗?
我希望使用正则表达式尝试删除字符串中的所有非字母数字字符,并用 我只想允许基本上按字母顺序排列的单词A-Z和 这是专门准备字符串成为URL的一部分,因此需要符号而不是空格。 我已经查看了< code>/\W /,但是这将删除所有空格和字母数字字符,而我希望尽可能保留空格,然后用符号替换。 我已经搜索了一下,但我似乎找不到一些东西,我希望有人能对此有任何简单的建议。 示例字符串